Warsaw University of Technologyhome.elka.pw.edu.pl/~pgawron/include/art/Hakin9_2_2011.pdf · 2011....

47

Transcript of Warsaw University of Technologyhome.elka.pw.edu.pl/~pgawron/include/art/Hakin9_2_2011.pdf · 2011....

  • http://www.kaspersky.pl/http://www.xdsnet.pl/

  • http://www.kaspersky.pl/

  • � ����� ��������������������������������� ������ ������������ ���������� ����������

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

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

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

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

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

    CYKL SZKOLEŃZ OBSZARU ZARZĄDZANIABEZPIECZEŃSTWEM IT

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

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

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

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

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

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

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

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

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

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

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

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

    �������

    http://www.isecman.org

  • 4

    DRODZY CZYTELNICY

    Idzie luty szykuj... minifiltry. Pokonując nie tak du-że w tym roku zaspy śnieżne oraz nie zwalniając na oblodzonych zakrętach oddajemy w Wasze ręce kolejny numer naszego magazynu. Mamy nadzie-ję, że każdy z Was znajdzie w nim coś dla siebie. W tym wydaniu przygotowaliśmy między innymi ar-tykuły o minifiltrach systemu Windows czy pierwszą część artykułu pod tajemniczym tytułem – Oszu-kać napastnika. Strzeżcie się zatem potencjalni in-truzi! Ponadto mamy dla Was teksty o bazach da-nych – ich bezpieczeństwie oraz o zasadach korzy-stania z nich w świetle przepisów prawnych. Na de-ser w naszym mroźnym numerze polecamy wziąć udział w gorącym konkursie, w którym do wygrania jest pięć egzemplarzy oprogramowania antywiruso-wego Kaspersky Internet Security 2011.

    Zachęcamy zatem do lektury i życzymy szczęścia w konkursie!Redakcja

    2/2011 (69)

    4 2/2011

    Miesięcznik hakin9 (12 numerów w roku)jest wydawany przez Software Press Sp. z o.o. SK

    Prezes wydawnictwa: Paweł Marciniak

    Dyrektor wydawniczy: Ewa Łozowicka

    Redaktor prowadzący:Adrian Gajewski [email protected]

    Skład i łamanie: Tomasz Kostro www.studiopoligraficzne.com

    Kierownik produkcji: Andrzej Kuca [email protected]

    Wyróżnieni betatesterzy: Łukasz Przyjemski

    Adres korespondencyjny:Software Press Sp. z o.o. SK, ul. Bokserska 1,

    02-682 Warszawa, Polska tel. +48 22 427 32 85, +48 22 427 36 46, fax +48 22 224 24 59

    www.hakin9.org/pl

    Dział reklamy: [email protected]

    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.

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

    Zostały użyte wyłącznie w celach informacyjnych.

    Osoby zainteresowane współpracą prosimy o kontakt z Redakcją.

    6 Aktualności

    9 Konkurs Hakin9 i Kaspersky

    OBRONA10 Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrówPiotr GawronCzytelnicy zainteresowani modyfikowaniem swojego Windowsa na pewno znają wiele sposobów na osiąga-nie „odmiennego” zachowania systemu. W tym artyku-le chciałbym zająć się zmodyfikowaniem odczytu za-wartości nośników danych. Zapewne zdarzają się sytu-acje, kiedy nie chcemy, aby możliwy był dostęp do pew-nych informacji na nim zawartych. Atrybut read i prawa dostępu? Może czasami ta kombinacja wystarczy, ale dlaczego do realizacji tego zadania nie zaprząc tech-nologii używanej między innymi przez... programy an-tywirusowe?

    16 Oszukać napastnika – cz. 1. Poznaj podstawowe metody ukrywania informacji o swoim systemie Sebastian FydaKażdy dostępny publicznie serwer świadczy zwykle jed-ną lub więcej usług. Każda z tych usług to pewien frag-ment oprogramowania, które jak każde oprogramowa-nie ma swoje błędy. Każda z usług ma też swoją cha-rakterystyczną sygnaturę, która pozwala na określenie, jaki software i w jakiej wersji realizuje usługę. Dzięki publicznemu udostępnieniu tych informacji zwiększa-my ryzyko skutecznego ataku na nasz serwer. Czasa-mi samo ukrycie informacji wystarczy do zniechęcenia

    SPIS TREŚCI

  • www.hakin9.org 55

    HAKIN9 2/2011

    SPIS TREŚCI

    tzw. Script-kiddies, którzy z reguły poszukują serwe-rów z konkretną wersją oprogramowania i niezdradza-jących jakichkolwiek działań w kierunku hardeningu, ja-ko celi swoich ataków.

    20 Bezpieczeństwo baz danychMichał SajdakBazy danych często stanowią jeden z głównych ele-mentów systemów IT: przechowują oraz udostępniają informacje. Sama definicja bazy nie narzuca określone-go sposobu organizacji danych, jednak obecnie najbar-dziej rozpoznawana na rynku jest baza relacyjna oraz związany z nią język SQL. Implementacji „SQL-owych baz danych” są zapewne setki, choć zaledwie kilka z nich cieszy się dużą popularnością. Takimi systema-mi są: Oracle Database, SQL Server, DB2, MySQL czy Postgresql. Przy okazji, warto wspomnieć, że istnieją również inne rozwiązania – oferujące alternatywne do wspomnianych powyżej sposoby organizacji informacji, jak choćby obiektowa baza danych (np. ZODB) czy ba-za danych XML (np. eXist).

    26 Zarządzanie bezpieczeństwem danych osobowych. Kwestie prawne e-commerceMarcin EngelmannDane osobowe klientów sklepu internetowego – na co powinien zwrócić uwagę właściciel sklepu, żeby nie tyl-ko działać w zgodzie z ustawą o ochronie danych oso-bowych, ale również budować zaufanie swoich klien-tów. Czym są dane osobowe, jak je zabezpieczyć, na co zwrócić uwagę?

    32 Bazy danych i zasady korzystania z nich w świetle przepisów prawa polskiegoDariusz ŁydzińskiBazy danych i korzystanie z nich stanowią przedmiot działalności wielu podmiotów gromadzących i prze-twarzających dane, dlatego też często są poddawane zagrożeniom ze strony przestępców działających we-wnątrz firmy oraz napastników zewnętrznych, którzy nie szukają już hakerskiej sławy, lecz są głównie zain-teresowani korzyściami finansowymi. W każdej organi-zacji dane są drugim najcenniejszym zasobem, zaraz po pracownikach. Firmy są zobowiązane do ochrony własnego personelu i klientów poprzez dołożenie na-leżytej staranności i zapewnienie maksymalnych możli-wych zabezpieczeń.

    BEZPIECZNA FIRMA37 Narzędzia do automatycznego audytu bezpieczeństwaMaciej KarmolińskiWprowadzanie systemu automatycznego wykrywania i zarządzania podatnościami w złożonych sieciach, jest nowo przyjętym podejściem dużych i średnich przed-siębiorstw na rynku europejskim. Ocena stosowanych zabezpieczeń uległa znacznej poprawie dzięki kwar-talnym, miesięcznym a nawet codziennym audytom, dzięki którym mamy możliwość szybszego reagowa-nia na powstałe luki systemu, bądź zmianę istnieją-cego zagrożenia. Narzędzia służące automatyczne-mu wykrywaniu podatności, pozwalają na łatwą i pre-cyzyjną kontrolę bezpieczeństwa informacji poufnych, która może być prowadzona przez jedną osobę dla ca-łej firmy.

    KLUB TECHNICZNY41 Klub TechnicznyTriGeo SIM oraz ATOS

    FELIETON45 Odzyskiwanie danych po polsku, czyli jak nie stracić danych odzyskując jeArtur Skrouba

  • 2/20116

    AKTUALNOŚCI

    www.hakin9.org 7

    Aktualności

    Polacy ostrzegali IBM-aPrzeznaczony dla deweloperów serwis korporacji IBM padła ofiarą cyber-przestępców, którzy podmienili zawartość niektórych stron - poinformował amerykański koncern.

    IBM nazwał włamanie aktem wandalizmu. Korporacja odzyskała zawar-tość oryginalnych stron w ciągu kilku godzin, mimo tego kopia pracy cyber-przestępców została przekopiowana w inne miejsce.

    Nie utracono żadnych danych, nie doszło także do przejęcia danych oso-bowych oraz haseł - uspokaja IBM.

    Jak się okazuje, o słabych zabezpieczeniach serwisu korporację IBM in-formowała już siedem miesięcy temu firma Ariko Security z Oświęcimia.

    Tymczasowe obejście na lukę w CSSMicrosoft opublikował przejściową łatę krytycznej luki w zabezpieczeniach Internet Explorera, która wystawiała komputery na ryzyko ataku poprzez zdalne wykonanie kodu.

    Gigant oprogramowania otrzymał do tej pory niewielką liczbę zgłoszeń dotyczących ataków z wykorzystaniem tej luki.

    “Błąd związany jest z niewłaściwym zwalnianiem pamięci podczas pra-cy funkcji CSS w Internet Explorerze” - poinformował Microsoft. “Specjalnie spreparowana strona internetowa może przejąć część pamięci aby wstrzyk-nąć tam zdalny kod” - informuje dalej.

    Nowa poprawka zabezpiecza przed rekurswnym ładowaniem styli CSS w Internet Explorerze. Firma z Redmond sugeruje, aby administratorzy IT, którzy podejrzewają atak, powinni się zastosować do zaleceń. Jest to na ra-zie jedyny sposób ominięcia zagrożenia.

    SMS-y nie są już bezpieczneRSA przewiduje w tym roku wzrost intensywności ataków na telefony ko-mórkowe - celem cyberprzestępców ma być przechwytywanie SMS-ów au-toryzujących operacje bankowe.

    Tokeny tego typu maja uzupełniać autoryzację użytkownika, który oprócz podania loginu i hasła musi wprowadzić kod otrzymany od banku SMS-em. Często w ten sposób autoryzowane są operacje bankowe.

    Tego typu autoryzacja staje się coraz popularniejsza - Commonwealth Bank of Australia ujawnia, że z takiego mechanizmu korzysta 80 procent klientów tego banku (bank nie namawia zbytnio na takie rozwiązanie).

    “Przestępca może przeprowadzić telefoniczny atak typu ‘denial-of-servi-ce’, który unieruchomi komórkę ofiary” - tłumaczy RSA. “Wysyłany przez bank SMS może być przechwycony i przekazany bezpośrednio to telefo-nu cyberprzestępcy”. Raport RSA wyjaśnia, że póki co nie ma efektywnego sposobu ochrony przed tzw. “smishingiem”.

    Facebook wstrzymuje nową funkcjonalnośćFacebook “tymczasowo zawiesił” wprowadzenie kontrowersyjnej funkcjonal-ności swojego portalu, która miała udostępniać deweloperom aplikacji dane osobowe użytkowników korzystających z niewielkich dodatków do FB.

    Serwis społecznościowy wstrzymał wprowadzenie funkcjonalności trzy dni po oficjalnym anonsie. Decyzja spowodowana została gwałtownym pro-testem użytkowników oraz krytyką firm zajmujących się bezpieczeństwem.

    Aby uzyskać dostęp do aplikacji użytkownik musi udzielić na to zgodę. Jednakże spora grupa internautów bardzo często klika w różnego rodzaju przyciski, nie zwracając uwagi na znajdujący się obok opis. To właśnie dla-tego nowa funkcjonalność zwraca uwagę takich firm, jak chociażby Sophos, który sądzi, że teraz łatwiej szerzyć się będą złośliwe aplikacje.

    Zatruwanie P2PFirmy zajmujące się walką z pirac-twem (takie jak chociażby Media-Defender) od lat zalewają sieci peer-to-peer fałszywymi danymi. Mimo że techniki tego typu różnią się od siebie, cel jest ten sam - znie-chęcić ściągających pliki tak skutecz-nie, aby ci poszukali sobie legalnej alternatywy.Działania te rozpoczęły cichą wojnę pomiędzy “wymieniaczami plików”, a grupami antypirackimi.Ci pierwsi rozpoczęli blokować znane adresy IP, które serwują fałszy-we pliki. Serwisy, takie jak The Pirate Bay, filtrowały zawartość, blokując konta użytkowników wrzucających niewłaściwe treści.Pomimo takich działań, sieci P2P w dalszym ciągu zalane są fałszy-wymi plikami. Z najnowszych analiz wynika, że prawie jedna trzecia treści dostępnych w sieci BitTorrent jest fałszywa. Najwyższe statystyki (30 procent fałszywych plików) notują tak popularne portale, jak The Pirate Bay i Mininova - podają prowadzący badania naukowcy z Uniwersytetu Carlosa III z Madrytu.

    Amazon pomaga łamać hasła WPAWebhostingowa oferta Amazo-na może pomóc cyberprzestępcom w łamaniu haseł sieci bezprzewodo-wych - uważa niemiecki ekspert ds. bezpieczeństwa.Thomas Roth twierdzi, że chmura serwerów EC2 Amazona znacznie ułatwia pracę narzędziom do łama-nia haseł sieci bezprzewodowych.Stworzone przez Rotha oprogramo-wanie zainstalowane w chmurze komputerów Amazona jest w stanie przetestować w ciągu sekundy 400 tysięcy haseł.Ekspert pragnie ujawnić wyniki swojej pracy nad łamanie standardu WPA-PSK podczas konferencji Black Hat, która odbędzie się w tym mie-siącu.“Ludzie mówią mi, że nie da się złamać WPA, a jeśli jest to możliwe, koszto-wać to może sporo czasu i pieniędzy” - twierdzi Roth. “Z taką mocą oblicze-niową jest to łatwe, nawet korzystając z metody brute force” - dodaje.Złamanie jednego hasła WPA-PSK za pomocą chmury Amazona trwa śred-nio około sześć minut.

  • 2/20116

    AKTUALNOŚCI

    www.hakin9.org 7

    Aktualności

    Stuxnet mógłby być bardziej efektywnyRobak Stuxnet, który zaatakował kluczowe systemy związane z irańskim programem nuklearnym, niszcząc sprzęt oraz opóźniając prace, jest “pełen błędów” - uważa jeden z ekspertów ds. bezpieczeństwa.

    Konsultant Tom Parker zasugerował podczas swego wystąpienia na kon-ferencji Black Hat DC, że kod robaka nie został raczej stworzony przez je-den elitarny zespół, jak wcześniej sądzono, lecz dwie niezależne grupy.

    Parker wykorzystał do analizy kodu robaka odpowiednie narzędzie, które wykazało znaczące różnice w jakości kodu.

    Stuxnet ukrył się w systemie nuklearnym w bardzo sprytny sposób, zapi-sując wcześniej telemetrię normalnych operacji, a następnie odtwarzał ją zespołowi monitorującemu podczas swej właściwej pracy.

    Takie działania nie przekonują eksperta Neila Lawsona, który uważa, że zastosowane metody maskowania są amatorskie. “Mam nadzieję, że robak nie został stworzony w USA, bo oznaczałoby to, że nasze elitarne cyber-służby reprezentują poziom bułgarskich nastolatków z lat 90-tych”.

    Przestępcy dbają o prawa autorskieAutorzy złośliwego oprogramowania stosują w swoich najpopularniejszych produktach zabezpieczenia antypirackie chroniące ich własną pracę - in-formuje Symantec. Zabezpieczenia takie posiadają bardziej skomplikowa-ne zestawy narzędziowe. “Używają tej samej technologii DRM (Digital Ri-ghts Management), co legalne, poważne produkty” - tłumaczy Craig Scrog-gie, dyrektor zarządzający Symantec Pacific. “Tworzą swoje systemy DRM, kradną te już dostępne, albo łączą oba rozwiązania” - dodaje.

    Większość klientów kupujących hakerskie zestawy narzędziowe nie po-siada wystarczająco dużo wiedzy, aby poradzić sobie z zabezpieczeniami DRM. A cena za tego typu produkty wzrosła dramatycznie - z 11 w 2006 ro-ku do 5800 euro obecnie. “Wysoka cena uzależniona jest od skuteczności malware” - wyjaśnia Scroggie.

    Złamano zabezpieczenia aplikacji na Windows Phone 7FreeMarketplace to koncept aplikacji pozwalający na darmowe pobranie i za-instalowanie dowolnej aplikacji systemu operacyjnego Windows Phone 7. Chociaż aplikacje Marketplace są chronione przez DRM, FreeMarketpla-ce usuwa te blokady, pozwalając na korzystanie z programów bez potrze-by dokonywania opłat.

    Już wkrótce po pojawieniu się platformy na rynku okazało się, że moż-na łatwo pobrać pakiety instalacyjne - pliki XAP. Klient Zune pobiera pliki XML zawierające wszystkie lokalizacje pakietów, zaś zarówno pliki XML, jak i XAP są oferowane bez restrykcji.

    Niedawno na forum deweloperów XDA pojawił się post informujący w ja-ki sposób można pobrać i przerobić plik XAP, aby udało się go zainstalo-wać. Pomimo skasowania przez admininistrację forum posta, okazał się on inspiracją dla pewnego dewelo-pera, który stworzył aplikację mo-dyfikującą pliki XAP. Autor kodu nie dystrybuuje aplikacji, nie opi-suje też w szczegółach jej działa-nia. Jego intencją jest zademon-strowanie problemu, a nie promo-cja piractwa.

    Microsoft został poinformowany o pojawieniu się aplikacji.

    Bomba od The Pirate Bay?Zespół portalu The Pirate Bay przy-gotowuje nową usługę wymiany plików muzycznych.TPB zarejestrował kilka lat temu domenę themusicbay.org, która do tej pory nie była wykorzystywana. Obecnie przekierowuje ona ruch na stronę The Pirate Bay.Zastanawia natomiast pojawienie się nowego adresu - fear.themusica-bay.org - pusta witryna zawiera w na-głównku tag title o treści “Coming soon”.“Przemysł muzyczny nie ma pojęcia co przygotowujemy i zaprezentuje-my w ciągu najbliższych miesięcy. Od lat zawzięcie tłumaczą nam o pirac-twie, ale jeśli kiedykolwiek mieliby się czegoś wystraszyć, ten czas nadcho-dzi” - ujawnił rzecznik The Pirate Bay.“To będzie niespodzianka na 78 uro-dziny IFPI [International Federation of the Phonographic Industry]” - dodaje.

    Botnet dla smartfonówGeorgia Weidman to sprytna dziew-czyna - dzięki jej pracy mamy do czy-nienia z erą nowego typu malware dla komórek.Weidman planuje prezentację swojej pracy podczas najbliższej imprezy Schmoocon w Waszyngtonie - pod-czas wystąpienia wykorzysta ona trzy telefony z systemem Android.Cóż takiego stworzyła Weidman? Metodę stworzenia ze smartfonów węzłów botnetu.Do zainfekowania telefonu służy stworzony przez Weidman rootkit, który po zainstalowaniu odpowiada za wysyłanie spamu lub przeprowa-dzanie ataku DoS bez wiedzy właści-ciela telefonu.“Gdy zainfekowałam telefon w swoim laboratorium, smartfon był w stanie odbierać sms-y z instrukcjami, które po odebraniu ulegały skasowaniu. Dzięki temu użytkownik nie ma świa-domości, że jego telefon jest częścią botnetu” - wyjaśnia.

  • 2/20118

    AKTUALNOŚCI

    Estonia chce mieć cyberoddziałEstonia chce rekrutować specjalistów do swojej tworzonej cyberarmii.Niewielkie nadbałtyckie państwo tworzy kadrę komputerowych specjalli-stów - ochotników, którzy mają bronić komputerowej infrastruktury kraju.

    Znany pod nazwą Cyber Defense League oddział ma składać sie ze spe-cjalistów IT oraz inżynierów, którzy w czasie wojny będą dowodzeni przez przedstawicieli armii.

    Estonia ma dobry powód, by stworzyć tego typu oddział - jako pierwszy kraj w historii padła ofiarą zmasowanego cyberataku. Sprawcami ataku by-li Rosjanie, którzy wyrazili swój sprzeciw w kwestii przenoszenia pomników pamięci żołnierzy poległych w czasie II Wojny Światowej.

    Nadchodzą czasy cyberwojenGłównodowodzący brytyjskich sił zbrojnych, generał Sir David Richards, pragnie stworzyć specjalną jednostkę, która ma chronić Zjednoczone Kró-lestwo przed cyberatakami.

    Richards przewiduje swego rodzaju kulturową zmianę w działaniach wo-jennych - Internet ma odgrywać równie istotne znaczenie na polu walki, co wojska konwencjonalne. “Musimy nauczyć się bronić, przeszkadzać, atako-wać i manewrować w cyberprzestrzeni, tak jak robimy to na lądzie, morzu, czy w powietrzu” - tłumaczy Sir Richards.

    “Wojny przyszłości zawsze będą dotyczyć cyberprzestrzeni, aby stać się potem dominującym polem walki” - dodaje.

    Sony odpowiada na złamanie PS3Minął już ponad miesiąc od pojawienia się informacji o złamaniu przez gru-pę Fail0verflow klucza prywatnego dla konsoli PS3.

    Odkrycie to pozwala domowym deweloperom podpisywać swoje aplika-cje i uruchamiać je na PlayStation 3. Przedstawiciele Sony przez tydzień nie komentowali odkrycia - możliwe, że nie zwrócili uwagi na raport, albo też uważali, że jest to luka, którą w łatwy sposób można wkrótce załatać.

    Japoński producetnt wysłał do magazynu Edge swoje oficjalne stanowi-sko: “Zostaliśmy poinformowani o fakcie złamania klucza i przyglądamy się tej kwestii. Dokonamy naprawy oprogramowania poprzez odpowied-nie aktualizacje sieciowe, jednakże ze względu na to, że mamy do czynie-nia z kwestiami bezpieczeństwa, nie możemy podać dalszych szczegółów” - wyjaśnia przedstawiciel Sony.

    Jednakże grupa Fail0verflow twierdzi, że tym razem prosta aktualizacja oprogramowania nie będzie w stanie załatać dziury, podobnie jak miało to miejsce w przypadku kluczy USB typu PS Jailbreak.

    “Cała konsola została skom-promitowana - nie ma już spo-sobu na naprawę. To bardzo poważna kwestia i ktoś w So-ny będzie miał kłopoty” - tłuma-czą przedstawiciele grupy. We-dług nich jedyna rada to wymia-na sprzętu.

    Jeśli informacje podane przez Fail0verflow okażą się prawdzi-we, po wydaniu przez Sony no-wej wersji PS3 cena “starej” konsoli może wzrosnąć na róż-nego rodzaju aukcjach.

    Użytkownicy Twittera w niebez-pieczeństwieWykryto szkodnika rozprzestrzenia-jącego się na Twitterze. Robak wyko-rzystuje usługę Google pozwalają-cą na skracanie odsyłaczy (goo.gl) i nakłania niczego niepodejrzewa-jących użytkowników do instalowa-nia fałszywych programów antywi-rusowych na swoich komputerach. Robak przekierowuje użytkowników Twittera na stronę WWW oferującą fałszywe rozwiązanie antywiruso-we o nazwie „Security Shield”. Cyber-przestępcy użyli specjalnych tech-nik, aby ukryć prawdziwy kod strony przed bardziej wnikliwymi osobami.„Szkodliwe odsyłacze w wiadomo-ściach na Twitterze przekierowu-ją użytkowników na różne domeny, w obrębie których znajduje się strona o nazwie ‘m28sx.html’” - mówi Nico-las Brulez, ekspert z Kaspersky Lab. „Ta strona z kolei przerzuca użytkow-ników jeszcze dalej, pod adres w do-menie zlokalizowanej na Ukrainie”. Jakby tego było mało, domena ta przekierowuje na inny adres IP, który był już wcześniej wykorzystywa-ny przez cyberprzestępców do ofe-rowania użytkownikom fałszywych programów antywirusowych. „Ten adres wykonuje ostatnie przekierowa-nie, które prowadzi wprost do strony zawierającej szkodliwy kod”, tłuma-czy Nicolas Brulez.W efekcie atakowany użytkownik widzi sfałszowaną informację o tym, że na komputerze działają podejrza-ne aplikacje i otrzymuje propozy-cję uruchomienia skanowania anty-wirusowego. Jak zwykle w takich przypadkach, po uruchomieniu „ska-nowania” komputer jest infekowa-ny prawdziwymi szkodliwymi pro-gramami, a użytkownik otrzymu-je ofertę zakupu programu antywi-rusowego w atrakcyjnej cenie. Pro-gram ten oczywiście jest fałszywy, a jego instalacja prowadzi wyłącznie do dalszych infekcji.

    Więcej newsów znajduje się na stronie serwisu

    informacyjnego Hacking.pl http://hacking.pl.

  • www.hakin9.org 9

    KONKURS Hakin9 i Kaspersky

    W najbliższym newsletterze Hakin9 zamieścimy pytanie odnoszące się do jednego z tekstów z tego numeru. Wśród prawidłowych odpowiedzi rozlosujemy pięć programów antywirusowych Kaspersky Internet Security 2011.

    Na odpowiedzi nadesłane na adres [email protected] czekamy do 8 lutego. Zwycięzców poinformujemy drogą mailową.

    Do wygrania Kaspersky Internet Security 2011

    Powodzenia!

    KONKURS

  • 2/201110

    OBRONA Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrów

    www.hakin9.org 11

    Dane przedstawiane na ekranie komputera są wynikiem przetwarzania wykonywanego przez komputer na podstawie załadowanych do nie-go programów. Ikona pliku z jego nazwą w oknie eks-ploratora Windows świadczy o tym, że całe oprogra-mowanie realizujące jej wyświetlenie na ekranie zo-stało zrealizowane w sposób dający właśnie taki wy-nik. Proces generacji wyniku graficznego zaczyna się każdorazowo na poziomie sprzętu i przechodzi przez wszystkie warstwy oprogramowania zwanego syste-mem operacyjnym, swoją drogę kończąc gdzieś w kar-cie graficznej i potem na ekranie monitora. Co można w takim razie osiągnąć, jeśli istnieje możliwość zmo-dyfikowania nieco tego procesu gdzieś na początko-wym jego etapie?

    Sterowniki a bezpieczeństwoPowszechnie znanym faktem dotyczącym zabezpie-czania urządzeń elektronicznych przed niepożądanymi zdarzeniami i zachowaniami użytkowników jest to, że w im niższej warstwie architektury ochrona ta jest za-implementowana, tym prawie zawsze jest skuteczniej-sza. W przypadku komputerów nie mamy zazwyczaj

    możliwości lub umiejętności modyfikacji sprzętu, który w przypadku produktów masowych nie jest projektowa-ny z myślą o bezpieczeństwie (wyjątkiem niech będzie tutaj sprzętowy moduł TPM, Trusted Platform Module).

    Dla programisty, jedną z pierwszych warstw, na któ-rej można implementować zabezpieczenia, są sterow-niki urządzeń trybu jądra systemu. O ile zagadnienie nie jest banalne, to na szczęście firma Microsoft uła-twiła nieco zadanie i w zakresie instalowalnych ste-rowników systemu plików (Installable File System Dri-vers, IFSD) udostępniła architekturę minifiltrów. Minifil-trom właśnie poświęcony jest ten tekst.

    Podniesiony w artykule temat dość mocno wiąże się z zagadnieniami zapewniania bezpieczeństwa infor-macji przechowywanych na stacjach klienckich w śro-dowisku nadzorowanym. Początkowo był jedynie czę-ścią opracowywanej architektury monitora bezpie-czeństwa dla stacji klienckiej (komputera), jednak sam okazał się na tyle ciekawy i daje na tyle dużo możliwo-ści, że doczekał się osobnej publikacji.

    Sterowniki systemu plikówIlustrując kolejne warstwy jądra Windows jako struk-

    Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrów

    Czytelnicy zainteresowani modyfikowaniem swojego Windowsa na pewno znają wiele sposobów na osiąganie „odmiennego” zachowania systemu. W tym artykule chciałbym zająć się zmodyfikowaniem odczytu zawartości nośników danych. Zapewne zdarzają się sytuacje, kiedy nie chcemy, aby możliwy był dostęp do pewnych informacji na nich zawartych. Atrybut read i prawa dostępu? Może czasami ta kombinacja wystarczy, ale dlaczego do realizacji tego zadania nie zaprząc technologii używanej między innymi przez... programy antywirusowe?

    Piotr Gawron

    Dowiesz się:• jak działają sterowniki urządzeń trybu jądra• co to są filtry systemu plików Windows• jak modyfikować w locie zawartość woluminu

    Powinieneś wiedzieć:• podstawy wewnętrznej architektury systemu operacyjnego• różnice pomiędzy trybami jądra i użytkownika• podstawy programowania w C/C++

  • 2/201110

    OBRONA Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrów

    www.hakin9.org 11

    wanie swoistego proxy, oszczędza żmudnej imple-mentacji kompletnego sterownika, pozwalając jed-nocześnie skupić się na implementacji konkretnej funkcjonalności.

    Na rysunku 1 widać uproszczoną strukturę stosu systemu plików z załączonymi trzema minifiltrami. Atrybut wysokości definiuje wzajemne zależności pomiędzy kolejnymi minifiltrami. Jego wartość dekla-ruje się w pliku *.inf służącym do instalacji sterow-nika w systemie. Zdefiniowano ponad dwadzieścia przedziałów adresowych wysokości dla różnego ro-dzaju oprogramowania (antywirusowego, szyfrujące-go dane na dysku, przezroczystego kopiowania da-nych i inne).

    Należy pamiętać, że (mini-)filtry nie są stricte ste-rownikami urządzeń. Mają one za zadanie jedynie mo-nitorować dyskowe operacje wejścia/wyjścia. Opera-cje te to w szczególności:

    • Tworzenie, otwieranie, zamykanie, wyliczanie pli-ków i folderów,

    • Pobieranie i ustawianie właściwości plików, folde-rów i woluminów,

    • Czytanie i pisanie danych z i do pliku.

    Oprócz monitorowania, minifiltry mają bezpośredni dostęp do danych (zawartości plików) przesyłanych

    turę pionową (gdzie dół to sprzęt, a góra - interfejs użytkownika), sterowniki trybu jądra (kernel mode) od spodu „rozmawiają” z warstwą abstrakcji sprzętu (Har-dware Abstraction Layer, HAL), skąd już tylko jeden krok w dół do elektroniki na płytkach drukowanych. Oznacza to, że w przeciwieństwie do „zwykłych” apli-kacji działających w trybie użytkownika (user mode), oprogramowanie to ma bezpośredni i nieograniczony dostęp do zasobów systemowych. Wprowadzenie błę-du do sterowników kończy się najczęściej nie informa-cją o niespodziewanym zakończeniu programu, lecz natychmiastowym restartem komputera.

    Istnieją cztery kategorie instalowalnych sterowników systemu plików Windows:

    1. Sterowniki systemu plików (File System Drivers) – kompletny sterownik, obsługujący wszystkie operacje umożliwiające interakcję systemu z za-wartością dysku,

    2. Sterowniki sieciowego przekierowania (Network Redirector Drivers) – sterownik ukrywa brak bez-pośredniego połączenia z zasobami (dysk, dru-karka, skaner), oferując użytkownikowi funkcjo-nalność nierozróżnialną względem tej oferowanej przez odpowiadające zasoby lokalne,

    3. Filtry systemu plików (File System Filter Drivers) – opcjonalna nakładka na zainstalowany sterow-nik systemu plików. W zależności od implementa-cji, filtr może logować, obserwować, modyfikować lub zabraniać wybranych operacji dyskowych. Po-nieważ filtry wpinane są bezpośrednio do stosu I/O bez uczestnictwa elementu pośredniczącego, ich implementacja wymaga przygotowania kom-pletnego rozwiązania współpracującego z każdym typem żądań systemowych występującym w sto-sie sterowników systemu plików,

    4. Minifiltry systemu plików (File System Minifilter Dri-vers) – upraszcza osiągnięcie funkcjonalności fil-trów poprzez wprowadzenie do stosu I/O operacji dyskowych generycznego Menedżera filtrów (Filter Manager) i umożliwienie ładowania do niego rów-nież generycznych minifiltrów. Poprzez zastoso-

    Listing 1. Skrypt postbuild.cmd, należy uruchomić po każdorazowej kompilacji

    Rem Usuwam stare binaria

    if exist del %PROJECT_ROOT%\filesys\miniFilter\minispy\bin\minispy.exe

    if exist del %PROJECT_ROOT%\filesys\miniFilter\minispy\bin\minispy.sys

    Rem Kopiuje nowe binaria do katalogu bin

    copy %PROJECT_ROOT%\filesys\miniFilter\minispy\filter\objchk_win7_x86\i386\minispy.sys %PROJECT_ROOT%\filesys\

    miniFilter\minispy\bin\minispy.sys

    copy %PROJECT_ROOT%\filesys\miniFilter\minispy\user\objchk_win7_x86\i386\minispy.exe %PROJECT_ROOT%\filesys\

    miniFilter\minispy\bin\minispy.exe

    Listing 2. Skrypt run.cmd, start usługi, start klienta, usunięcie usługi

    Rem Uruchamiam zainstalowaną usługę

    sc start minispy

    Rem Uruchamiam aplikację kliencką i czekam na jej

    zakończenie

    minispy.exe

    pause

    Rem Zatrzymuję i usuwam usługę minispy

    sc stop minispy

    sc delete minispy

  • 2/201112

    OBRONA Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrów

    www.hakin9.org 13

    w żądaniach. Otwiera to całkiem spore możliwości implementacyjne.

    Narzędzie fltmc służy do zarządzania systemem mi-ni-filtrów. Za jego pomocą podejrzeć można aktualnie zainstalowane w systemie mini-filtry. Rysunek 2 poka-zuje mini-filtry zainstalowane na maszynie testowej. Są to między innymi: minispy (opisany dalej) i dwa mi-ni-filtry programu antywirusowego AVG Anti-Virus Free Edition 2011 (AVGIDSFilter i Avgmfx86). Liczba wystą-pień oznacza ilość woluminów, które dany minifiltr śle-dzi, natomiast Ramka oznacza instancję Menedżera filtrów, do którego minifiltr jest dołączony. Fltmc wyma-ga podniesionych uprawnień.

    Przygotowanie środowiskaPracę z minifiltrami rozpocząć należy od pobrania i in-stalacji pakietu Windows Driver Kit (WDK). Aby spraw-dzić, czy wszystko działa poprawnie, należy urucho-mić odpowiednią wersję dostarczonej w pakiecie kon-soli (niech będzie to x86 Checked Build Environment dla systemu Windows 7), wpisać BCZ i wcisnąć [En-ter]. Jeśli uruchomiona kompilacja zakończy się powo-dzeniem, komputer jest gotowy do pracy. W tym mo-mencie otrzymujemy pełny zestaw narzędzi potrzeb-nych do napisania, skompilowania i uruchomienia wła-snego minifiltra.

    WDK dostarcza obfity zestaw przykładowych sterow-ników wraz z kodem źródłowym. W tym artykule zaj-miemy się katalogiem [root]\7600.16385.1\src\filesys\

    miniFilter\, gdzie [root] to ścieżka instalacji WDK. Dla celów edukacyjnych warto zapoznać się z przykładem minispy. Opisane dalej oprogramowanie bazuje wła-śnie na tym kodzie. Minispy monitoruje i raportuje do programu poziomu użytkownika wszystkie operacje dyskowe, czyli jest elementem pasywnym. Modyfika-cja będzie polegała na wprowadzeniu do przykładu ko-du zmieniającego analizowane dane.

    Kod minispy należy zaimportować jako projekt do dowolnego IDE (najlepiej obsługującego podpowia-danie składni). IDE służyć ma jedynie do pisania ko-du, ze względu na import zmiennych środowiskowych kompilacji najłatwiej dokonuje się w dostarczonej z WDK konsoli: należy przejść bezpośrednio do kata-logu z projektem i tam uruchamiać makro BCZ. Jako IDE wykorzystano program Eclipse Helios Service Re-lease 1 z wtyczką CDT instalującą w Eclipse perspek-tywę C/C++.

    Pierwszy krok to utworzenie w Eclipse pustego pro-jektu C++. Następnie należy podlinkować (nie impor-tować) źródła minispy do projektu. W tym celu klika-my opcję Import... z menu kontekstowego utworzone-go projektu. W otwartym oknie dialogowym wybieramy importowanie plików (File System), a dalej wskazuje-my ścieżkę do katalogu, w którym znajduje się minispy ([root]\7600.16385.1\src\filesys\miniFilter\minispy). W zaawansowanych opcjach wybieramy utworze-nie linków zamiast skopiowania źródeł do przestrze-ni pracy (workspace). Dzięki temu modyfikacje zapi-sywane będą w oryginalnym katalogu, co ułatwi kom-pilację. Aby IDE potrafiło podpowiadać składnię, nale-ży jeszcze importować do projektu pliki nagłówkowe WDK. W tym celu otwieramy właściwości utworzonego projektu, rozwijamy węzeł C/C++ General, wybieramy Paths and Symbols, a na końcu wybieramy zakładkę Includes. Do opcji Assembly dodajemy ścieżkę [root]\7600.16385.1\inc\, natomiast do GNU C i C++ dodaje-my \api, \crt i \ddk poprzedzone [root]\7600.16385.1\inc\. W tym momencie można już dość komfortowo pracować z kodem. Przed wprowadzeniem jakichkol-wiek zmian zaleca się skopiowanie całego folderu mi-nispy do innej lokalizacji, aby można było bez proble-mu wrócić do oryginalnej wersji.

    Plik .infPlik instalacyjny .inf (minispy.inf) jest tekstowym pli-kiem wiążącym instalowany w systemie plik sterow-nika (minispy.sys) i plik programu użytkownika (mini-spy.exe) z tym systemem.

    Jedną z ważniejszych sekcji pliku instalatora jest ta określająca tryb uruchamiania minifiltra (StartType). Dla celów testowych należy stosować tryb SERVI-CE_DEMAND_START, wymuszenie dołączania wraz ze startem systemu może w razie błędów całkowicie unieruchomić system.Rysunek 1. Uproszczony stos IFSD

    �����������

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

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

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

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

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

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

    ������

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

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

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

    ����������

  • 2/201112

    OBRONA Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrów

    www.hakin9.org 13

    Pozostałe sekcje są dość zrozumiałe, podczas mo-dyfikacji pliku instalacyjnego należy sprawdzać do-stępną na stronie MSDN dokumentację.

    Uruchamianie minispyW celu instalacji i uruchomienia minispy po kom-pilacji należy utworzyć katalog (np. bin/), w którym znajdą się następujące pliki: minispy.inf (dostarczo-ny ze źródłami), minispy.sys (sterownik, w katalogu [root]\7600.16385.1\src\filesys\miniFilter\minispy\filter\objchk_win7_x86\i386) i minispy.exe (program użyt-kownika, [...]\user\objchk_win7_x86\i386). Aby ułatwić sobie odświeżanie plików po każdorazowej kompilacji, można użyć prostego skryptu jak na listingu 1.

    Po przejściu do utworzonego katalogu bin wybiera-my opcję Zainstaluj z menu kontekstowego pliku mini-spy.inf. Uruchomienie można zautomatyzować skryp-tem jak na listingu 2 (utworzonym w katalogu bin/). Po każdorazowym usunięciu usługi należy ją ponownie zainstalować. Konsola, w której wykonujemy opisane operacje, powinna być uruchomiona z podniesionymi uprawnieniami.

    Uwaga: w fazie rozwojowej nie zaleca się dołącza-nia minifiltra do partycji systemowej. W razie błędów może to powodować duże problemy z systemem.

    Po uruchomieniu klienta (minispy.exe) i wejściu do interaktywnego menu możemy na przykład zamonto-wać minispy do dowolnej partycji (polecenie /a d: za-łącza minispy do woluminu d:, zakładam jego istnie-nie, można użyć dowolnego innego). Wyjście minifiltra można przekierować do pliku (/f output.log). Otwórzmy teraz w eksploratorze partycję d, następnie kilka pli-ków i folderów. Na koniec zaleca się odłączenie mini-filtra (/d d:). Otwieramy utworzony plik output.log. Każ-da zarejestrowana operacja na partycji d została tam zaraportowana jako osobny wiersz. Należy zwrócić uwagę na kolumnę Major Operation. Występują tam wartości typu: IRP_MJ_CREATE, IRP_MJ_CLEANUP, IRP_MJ_CLOSE, IRP_MJ_DIRECTORY_CONTROL i wiele innych. Od tych informacji zaczniemy modyfi-kację naszego minifiltra.

    Modyfikowanie minispyWróćmy do projektu w Eclipse. Jak widać, projekt po-dzielony jest na trzy główne sekcje: filter, inc i user. Filter to oczywiście kod minifiltra, user to program try-

    bu użytkownika, natomiast inc zawiera współdzieloną bibliotekę. Przyjęta architektura jest tylko przykładem, minifiltr nie musi komunikować się z żadnym elemen-tem użytkownika. Zapoznanie się z kodem jest dosko-nałym sposobem na wdrożenie do tej technologii, bo-wiem użyty przykład zawiera implementację komplet-nego szkieletu architektury minifiltrów.

    Inicjalizacja minifiltra dokonuje się w procedurze Dri-verEntry (minispy.c). Wywołana tam funkcja FltRegi-sterFilter rejestruje minifiltr do nasłuchiwania na listę

    wybranych rodzajów operacji dys-kowych (podane wcześniej wartości Major Operation). Lista rejestracyj-na dla minispy znajduje się w tabli-cy CONST FLT_OPERATION_REGI-STRATION Callbacks[] (Registration-Data.c). Pierwszą modyfikacją bę-dzie pozostawienie na tej liście jedy-nie pozycji IRP_MJ_CREATE (resztę

    Listing 3. Tablica rozszerzeń blokowanych plików

    const UNICODE_STRING ExtensionsToScan[] = {

    RTL_CONSTANT_STRING(L"blocked"), { 0, 0, NULL}};

    Listing 4. Funkcja sprawdzająca rozszerzenia

    BOOLEAN CheckExtension(__in PUNICODE_STRING

    Extension) {

    const UNICODE_STRING *ext;

    if (Extension->Length == 0)

    return FALSE;

    // Sprawdzanie listy rozszerzeń

    ext = ExtensionsToScan;

    while (ext->Buffer != NULL) {

    if (RtlCompareUnicodeString(Extension, ext,

    TRUE) == 0) {

    // Plik posiada "nasze" rozszerzenie

    return TRUE;

    }

    ext++;

    }

    return FALSE;

    }

    Listing 5. Uniemożliwianie czytania pliku

    FltCancelFileOpen(FltObjects->Instance, FltObjects-

    >FileObject);

    Data->IoStatus.Information = 0;

    Data->IoStatus.Status = STATUS_ACCESS_DENIED;

    Rysunek 2. Obecne w systemie mini�ltry

  • 2/201114

    OBRONA Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrów

    www.hakin9.org 15

    należy wykomentować). Po kompila-cji i uruchomieniu minispy okaże się, że logujemy już tylko zdarzenia typu IRP_MJ_CREATE.

    Jak widać w liście Callbacks[], pra-wie każdy typ operacji dyskowej po-siada procedurę wstępną (SpyPre-OperationCallback) i kończącą (Spy-PostOperationCallback). Pierwsza wykonywana jest przy wykonywaniu zapytania do woluminu, druga przy zwracaniu wyników ale tylko jeśli operacja wstępna zwróciła wartość FLT_PREOP_SUCCESS_WITH_CALLBACK.

    Dla celów demonstracyjnych za-kłada się, że modyfikowanym kodem blokujemy dostęp tylko do plików z rozszerzeniem .blocked. W tym ce-lu deklarujemy tablicę jak na listin-gu 3 (możemy podać więcej rozsze-rzeń).

    Dodatkowo, potrzebujemy funkcji, która będzie sprawdzać, czy odczy-tywany plik posiada blokowane roz-szerzenie (listing 4). Należy pamię-tać o wcześniejszej deklaracji funk-cji tak, aby była ona widoczna w pli-ku minispy.c.

    Poprzez odpowiednie dodanie w funkcji wstępnej filtrowania rozsze-rzeń zmodyfikowany minifiltr będzie raportował już tylko funkcję IRP_MJ_CREATE na plikach posiadają-cych jedno z zadeklarowanych w ta-blicy ExtensionsToScan rozszerzeń. Jest to równoznaczne z tym, że tylko w takich przypadkach wywoływana jest funkcja kończąca (SpyPostOpe-rationCallback). Wykorzystajmy ten fakt do naszych celów.

    Dodatkowe trzy linie zaraz przed ostatnim return funkcji kończącej po-zwalają osiągnąć nam całkowitą blo-kadę czytania pliku (listing 5). Anali-zę kodu pozostawiam dociekliwemu Czytelnikowi.

    Listing 6 prezentuje ciało zmody-fikowanej funkcji SpyPreOperation-Callback.

    Rysunek 3 pokazuje wynik próby otwarcia dokumentu w eksplorato-rze Windows. Taki sam wynik otrzy-mujemy w Total Commanderze (ry-sunek 4). Zaprezentowany mecha-

    Listing 6. Zmody�kowana funkcja SpyPreOperationCallback

    FLT_PREOP_CALLBACK_STATUS SpyPreOperationCallback(

    __inout PFLT_CALLBACK_DATA Data, __in PCFLT_RELATED_OBJECTS FltObjects,

    __deref_out_opt PVOID *CompletionContext) {

    PRECORD_LIST recordList;

    PFLT_FILE_NAME_INFORMATION nameInfo = NULL;

    PUNICODE_STRING nameToUse;

    NTSTATUS status;

    // Pobierz listę logów

    recordList = SpyNewRecord();

    // Nie udało się

    if (recordList == NULL)

    return FLT_PREOP_SUCCESS_NO_CALLBACK;

    // Brak referencji do pliku

    if (FltObjects->FileObject == NULL)

    return FLT_PREOP_SUCCESS_NO_CALLBACK;

    // Pobierz informacje o nazwie pliku

    status = FltGetFileNameInformation(Data, FLT_FILE_NAME_NORMALIZED

    | MiniSpyData.NameQueryMethod, &nameInfo);

    // Sprawdź nameInfo

    if (nameInfo == NULL)

    return FLT_PREOP_SUCCESS_NO_CALLBACK;

    // Nie udało się pobrać nazwy

    if (NT_SUCCESS( status ))

    nameToUse = &nameInfo->Name;

    else

    return FLT_PREOP_SUCCESS_NO_CALLBACK;

    // Przygotuj nazwę do formy z której łatwo pobrać rozszerzenie

    FltParseFileNameInformation(nameInfo);

    // Sprawdź rozszerzenie

    if (CheckExtension(&nameInfo->Extension) == FALSE) {

    FltReleaseFileNameInformation(nameInfo);

    return FLT_PREOP_SUCCESS_NO_CALLBACK;

    }

    // Obsługiwany typ pliku, zapisz w logu

    SpySetRecordName(&(recordList->LogRecord), nameToUse);

    // Zwolnij strukturę z nazwą pliku

    FltReleaseFileNameInformation(nameInfo);

    // Ustaw wpis w logach

    SpyLogPreOperationData(Data, FltObjects, recordList);

    *CompletionContext = recordList;

    return FLT_PREOP_SUCCESS_WITH_CALLBACK;

    }

  • 2/201114

    OBRONA Nadzorowanie dostępu do zawartości woluminów w systemie Windows za pomocą minifiltrów

    www.hakin9.org 15

    nizm jest usytuowany na tyle nisko w systemie, że działa niezależnie od zastosowanego sposobu dostępu. Oczywiście próba dostępu do pliku jako Administrator również nie przy-nosi skutku.

    DebugowanieZe względu na niskopoziomowy cha-rakter prezentowanego oprogramo-wania również kwestia debugowania wygląda trochę inaczej niż zazwy-czaj. WDK zapewnia zestaw debug-gerów (katalog [root]\7600.16385.1\Debuggers). Cytując dokument de-bugger.chm z podanego katalogu: „Kernel-mode debugging requires a target computer and a host com-puter. The target computer is used to run the kernel-mode application. The host computer is used to run the de-bugger [...]”. Dużo prostszą (ale i bar-dziej ograniczoną) techniką jest uży-wanie w kodzie makr raportujących wiadomości do jądra i przechwyty-wanie ich na przykład programem DebugView (jako Administrator). Li-sting 7 przedstawia kod umożliwiają-cy to zadanie. Funkcja DbgPrint po-siada taką samą składnię, jak popu-larny printf.

    Na rysunku 5 widać wiadomości z minifiltra przechwycone przez pro-gram DebugView.

    ProblemyStworzenie w pełni przewidywalnego minifiltra modyfi-kującego operacje na plikach jest dużo bardziej złożo-ne niż wstęp zaprezentowany w artykule. Przykłado-wym problemem z przygotowaną implementacją jest to, że nie da się usunąć folderu, w którym znajduje się blokowany plik. Z jednej strony może być to pożąda-ne zachowanie. Jeśli jednak tak nie jest, należy po-chylić się nad dokumentacją do minifiltrów i zaimple-mentować odpowiednią modyfikację do każdego moż-liwego scenariusza operacji dyskowych w ramach tych nas interesujących.

    Co dalej?Mam nadzieję, że w tym miejscu Czytelnik ma już świadomość, że przedstawiona technologia umożliwia osiągnięcie dużo ciekawszych efektów, niż ukrywanie przed systemem zawartości wybranych plików. A co by było, gdyby tak w pierwszej kolejności te pliki po pro-stu... nie były widoczne?

    PIOTR GAWRONKończy studia magisterskie na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. Specjalizuje się w bezpieczeństwie systemów komputerowych. Kontakt: [email protected].

    Rysunek 3. "Nowy" minispy w eksploratorze

    Rysunek 4. "Nowy" minispy w Total Commander

    Rysunek 5. Wiadomości z mini�ltra w DebugView

    Listing 7. Wiadomości debugujące

    DbgPrint("Moja wiadomosc"); //Logowanie zwyklego ciagu znakow

    UINT wartosc = 4;

    DbgPrint("wartosc = %u", wartosc); //Logowanie wartosci zmiennej

    W Sieci• IFSD http://msdn.microsoft.com/en-us/library/ff551834(VS.85).aspx• WDK http://www.microsoft.com/whdc/Devtools/wdk/default.mspx• Eclipse http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliossr1• DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647

  • 2/201116

    OBRONA Oszukać napastnika – cz. 1. Podstawowe metody ukrywania informacji o systemie

    www.hakin9.org 17

    Większość demonów usług dostarczanych wraz z Debianem, w domyślnej konfiguracji dość ochoczo dzieli się informacjami z poten-cjalnym napastnikiem. Warto nieco poprawić dostarczo-ne z dystrybucją pliki konfiguracyjne, tak aby udostęp-niały one możliwie małą ilość informacji.

    Serwer WWW – Apache2Najpopularniejszą obecnie usługą jest serwer http, a do-minującą pozycję ma tutaj software Fundacji Apache. Rzućmy okiem, co zwraca serwer w domyślnej konfigu-racji, jeśli wywołamy nieistniejący url (Rysunek 1).

    Dodatkowo, jeśli zajrzymy w na-główki odpowiedzi, znajdziemy do-datkowe informacje:Connection: Keep-AliveContent-Encoding: gzipContent-Length: 180Content-Type: text/html; charset=i-so-8859-1Date: Mon, 24 Jan 2011 15:23:44 GMTKeep-Alive: timeout=15, max=100

    Server: Apache/2.2.16 (Debian) PHP/5.3.3-7 with Su-hosin-Patch mod_ssl/2.2.16 OpenSSL/0.9.8oVary: Accept-Encoding

    Łatwo zauważyć, że serwer podzielił się nie tylko swoją nazwą i wersją, ale również wersją interpre-tera PHP zainstalowanego w systemie (o ile w kon-figuracji PHP nie została ustawiona wartość expo-se_php = Off) oraz wersją biblioteki OpenSSL. Po-tencjalny napastnik wie teraz, że może szukać po-datności dotyczących powyższego oprogramowania. Ukrycie tych informacji jest sprawą dość trywialną.

    Oszukać napastnika – cz. 1. Podstawowe metody ukrywania informacji o systemie Każdy dostępny publicznie serwer świadczy zwykle jedną lub więcej usług. Każda z tych usług to pewien fragment oprogramowania, które jak każde oprogramowanie ma swoje błędy. Każda z usług ma też swoją charakterystyczną sygnaturę, która pozwala na określenie, jaki software i w jakiej wersji realizuje usługę. Dzięki publicznemu udostępnieniu tych informacji zwiększamy ryzyko skutecznego ataku na nasz serwer. Czasami samo ukrycie informacji wystarczy do zniechęcenia tzw. Script-kiddies, którzy z reguły poszukują serwerów z konkretną wersją oprogramowania i niezdradzających jakichkolwiek działań w kierunku hardeningu, jako celi swoich ataków.

    Sebastian Fyda

    Dowiesz się:• jak ukryć informacje o wersjach i parametrach usług działają-

    cych na Twoim serwerze

    Powinieneś wiedzieć:• podstawowa znajomość usług w systemach Linux

    Rysunek 1. Apache2 z włączonym Server Signature

  • 2/201116

    OBRONA Oszukać napastnika – cz. 1. Podstawowe metody ukrywania informacji o systemie

    www.hakin9.org 17

    zostanie zwrócony kod HTTP/1.1 304: Not modified, zamiast normalnego kodu HTTP/1.1 200 OK. i treści pliku w ciele odpowiedzi. Domyślnie w Apache ETag przyjmuje następującą postać np. ETag: "10c24bc-4ab-457e1c1f" a kolejne bloki odpowiadają wartościom ino-de-size-timestamp. Informacja o numerze I-nodu nie pomoże w ataku na serwer Apache, ale może pomóc w ataku na inne usługi sieciowe – np. usługa NFS (ang. Network File System) używa numerów I-node do gene-rowania uchwytów do plików.

    Istnieją dwa rozwiązania problemu:

    • Całkowita eliminacja ETag i zastąpienie go nagłów-kami Expires lub Cache-Control

    • Konfiguracja ETag eliminująca numery węzłów I-node

    Pierwsza opcja wymaga użycia modułu mod_headers, który jest standardowo dołączany z serwerem Apache. Wówczas na końcu pliku /etc/apache2/conf.d/security możemy dodać następujące linie:

    Header unset Etag

    FileETag none

    W przypadku opcji drugiej, w tym samym pliku usta-wiamy po prostu:

    FileETag MTime Size

    Na koniec restartujemy serwer Apache.

    Zajrzyjmy do fragmentu pliku /etc/apache2/conf.d/security (Listing 1).

    Jeżeli jednak zmienimy Server Tokens na Prod oraz ServerSignature na Off, to w oknie przeglądarki zoba-czymy (Rysunek 2). A w nagłówkach:Connection: Keep-AliveContent-Encoding: gzipContent-Length: 180Content-Type: text/html; charset=iso-8859-1Date: Mon, 24 Jan 2011 16:15:44 GMTKeep-Alive: timeout=15, max=98Server: ApacheVary: Accept-Encoding

    Łatwo zauważyć, że ilość ujawnionych informacji zosta-ła znacznie ograniczona. Dodatkowo, skoro już edytu-jemy plik /etc/apache2/conf.d/security warto dokonać jeszcze jednej zmiany. Odnajdujemy blok (Listing 2).

    I zmieniamy TraceEnabled na Off. Nie jest to de fac-to zdradzanie informacji, ale jest to w 99% przypadków funkcjonalność zbędna, a wręcz może być wykorzy-stana do ataków cross-site (polecam dokument: http://www.cgisecurity.com/whitehat-mirror/WH-WhitePa-per_XST_ebook.pdf).

    Kolejnym elementem w Apache, który możemy do-datkowo zabezpieczyć, to nagłówki ETag. Służą one do jednoznacznej identyfikacji zasobu będącego pli-kiem. Dzięki temu, jeśli przeglądarka zechce sprawdzić czy plik nie został zmieniony, prześle w nagłówku jego ETag. Jeśli plik na serwerze posiada ten sam ETag, to

    Listing 1.

    # ServerTokens

    # This directive configures what you return as the Server HTTP response

    # Header. The default is 'Full' which sends information about the OS-Type

    # and compiled in modules.

    # Set to one of: Full | OS | Minimal | Minor | Major | Prod

    # where Full conveys the most information, and Prod the least.

    #ServerTokens Minimal

    #ServerTokens OS

    ServerTokens Full

    # Optionally add a line containing the server version and virtual host

    # name to server-generated pages (internal error documents, FTP directory

    # listings, mod_status and mod_info output etc., but not CGI generated

    # documents or custom error documents).

    # Set to "EMail" to also include a mailto: link to the ServerAdmin.

    # Set to one of: On | Off | EMail

    #

    #ServerSignature Off

    ServerSignature On

  • 2/201118

    OBRONA Oszukać napastnika – cz. 1. Podstawowe metody ukrywania informacji o systemie

    19

    Serwer DNS – Bind9Bind jest z reguły pierwszym ser-werem DNS, z jakim początkujący administrator ma do czynienia. Do-myślnie skonfigurowany, może nie zwraca, aż tylu przydatnych informa-cji co Apache, ale nawet numer (Li-sting 3).

    Informacja, która jest nam zwra-cana, to wersja serwera Bind. Infor-mację tę możemy łatwo ukryć edytu-jąc plik /etc/bind/named.conf.options i dodając w sekcji options następują-cą linijkę:

    version "Windows 3.11 DNS Service";

    W cudzysłowie możemy podać dowolny ciąg znaków zgodny z ISO-8859-1. Po takiej operacji i zrestartowa-niu Binda, wykonując ponownie zapytanie dig, otrzy-mamy następujący wynik (Listing 4).

    Jak widać, ukrycie wersji powiodło się. Dobrym pomy-słem jest podanie jakiegoś dosyć starego numeru wer-sji, gdyż dla początkujących napastników, może podzia-łać to jak lep na muchy, powodując tym samym, że będą oni wypróbowywali stare, dawno zabezpieczone explo-ity, nie wysilając się specjalnie szukaniem nowych.

    Serwer FTP – ProFTPdUsługa FTP trzyma się nad wyraz dobrze, jak na ele-ment systemu niegwarantujący żadnego bezpieczeń-stwa transmisji. Warto zastanowić się nad użyciem pro-tokołu sftp zamiast ftp, co jak najbardziej serwer Pro-FTPd z pomocą modułu mod_sftp potrafi obsłużyć. Jak każda opisana tutaj usługa, domyślnie skonfigurowany sewer ProFTPd informuje o swojej wersji i rodzaju dys-trybucji systemu, na której został zainstalowany:

    user@localhost:~$ telnet localhost 21

    Trying 127.0.0.1...

    Connected to localhost.

    Escape character is '^]'.

    220 ProFTPD 1.3.0 Server (Debian) [127.0.0.1]

    Drobna zmiana w /etc/proftpd/proftpd.conf. Zmieniamy linie, lub dodajemy, jeśli nie istnieją, aby uzyskać na-stępującą postać:

    ServerName "SomeFunnyFTPServer"

    ServerIdent on "FTPD most bugged version ever"

    Teraz, jeśli ponownie odpytamy serwer FTP, przedsta-wi się on nam zupełnie inaczej.

    user@localhost:~$ telnet localhost 21

    Trying 127.0.0.1...

    Connected to localhost.localdomain.

    Escape character is '^]'.

    220 FTPD most bugged version ever

    To tyle na początek.

    Część druga

    1. NMap i NStat – dwa przydatne narzędzia2. Honeypots - wprowadzenie

    Listing 2.

    # Allow TRACE method

    #

    # Set to "extended" to also reflect the request body (only for testing and

    # diagnostic purposes).

    #

    # Set to one of: On | Off | extended

    #

    #TraceEnable Off

    TraceEnable On

    SEBASTIAN FYDAAutor jest Starszym Administratorem Systemów w �rmie Janmedia Interactive z Wrocławia. Kontakt z autorem: [email protected]

    Rysunek 2. Apache2 po wyłączeniu Server Signature

  • 2/201118

    OBRONA Oszukać napastnika – cz. 1. Podstawowe metody ukrywania informacji o systemie

    19

    Listing 3.

    user@localhost:~$ dig @localhost version.bind txt chaos

    ; DiG 9.7.2-P3 @localhost version.bind txt chaos

    ; (1 server found)

    ;; global options: +cmd

    ;; Got answer:

    ;; ->>HEADERHEADER

  • 2/201120

    OBRONA Bezpieczeństwo baz danych

    www.hakin9.org 21

    W poniższym tekście zajmiemy się tematyką ochrony baz danych – głównie w kontekście baz relacyjnych. Poruszymy takie zagadnie-nia, jak:

    • ekspozycja bazy na poziomie sieci,• poprawki bezpieczeństwa,• użytkownicy, z których wykorzystaniem działa baza

    danych,• uprawnienia do plików bazodanowych – na pozio-

    mie systemu plików,• ograniczenie funkcjonalności oferowanych przez

    bazę danych,• logowanie (księgowanie) dostępu do bazy danych,• ochrona kryptograficzna (szyfrowanie),• bezpieczeństwo po stronie aplikacji korzystających

    z bazy danych,• miejsce składowania danych w systemie plików,• kopie zapasowe.

    Zanim przejdziemy do szczegółów zastanowimy się wcześniej nad poniższym pytaniem.

    Dlaczego chronimy bazę danych?Odpowiedź na to pytanie może wydać się prosta: aby realizować odpowiednie cele biznesowe, tj. aby sys-tem, który wykorzystuje bazę danych, generował od-powiednie zyski dla organizacji. Zilustrujmy to na na-stępującym przykładzie:

    Prywatna placówka medyczna posiada system umożliwiający rejestrację pacjentów on-line. W bazie danych przechowywane są również informacje o pa-cjencie oraz historia jego chorób.

    Zyskiem z posiadania takiej bazy może być: wygoda pacjenta, ograniczenie dokumentacji papierowej oraz szybsze dodarcie do określonych informacji (oszczęd-ność czasu pracowników kliniki). Ten cel biznesowy może być zagrożony np. przez:

    • czasowy brak dostępności bazy (pacjenci nie mo-gą się rejestrować, lekarze nie mają wglądu w hi-storię choroby),

    • utratę poufności bazy (dane dostają się w niepo-wołane ręce; istnieje ryzyko np. złamania zapisów Ustawy o Ochronie Danych Osobowych),

    Bezpieczeństwo baz danychBazy danych często stanowią jeden z głównych elementów systemów IT: przechowują oraz udostępniają informacje. Sama definicja bazy nie narzuca określonego sposobu organizacji danych, jednak obecnie najbardziej rozpoznawana na rynku jest baza relacyjna oraz związany z nią język SQL. Implementacji „SQL-owych baz danych” są zapewne setki, choć zaledwie kilka z nich cieszy się dużą popularnością. Takimi systemami są: Oracle Database, SQL Server, DB2, MySQL czy Postgresql. Przy okazji, warto wspomnieć, że istnieją również inne rozwiązania – oferujące alternatywne do wspomnianych powyżej sposoby organizacji informacji, jak choćby obiektowa baza danych (np. ZODB) czy baza danych XML (np. eXist).

    Michał Sajdak

    Dowiesz się:• o przykładowych celach w jakich zabezpieczane są bazy da-

    nych• o podstawowych zasadach zabezpieczania baz danych• poznasz zewnętrzne źródła informacji, umożliwiające posze-

    rzenie wiedzy z zakresu bezpieczeństwa baz danych

    Powinieneś wiedzieć:• ogólna wiedza z dziedziny baz danych

  • 2/201120

    OBRONA Bezpieczeństwo baz danych

    www.hakin9.org 21

    wartości przechowywanych przez nas danych. Co to dokładnie oznacza, Czytelnik powinien sam, we wła-snym zakresie i analizując swój kontekst, ocenić. Za-interesowanych takimi szacowaniami odsyłamy do za-gadnień związanych z analizą ryzyka, a tu przechodzi-my już do konkretnych działań, które można wykonać przy weryfikacji bezpieczeństwa bazy danych.

    Weryfikacja bezpieczeństwa bazy danychBezpieczeństwo bazy danych może być zagrożone w różny sposób. Poniżej omówimy kilka kategorii za-grożeń, na które – naszym zdaniem – warto zwrócić uwagę. Pamiętajmy, że kompromitacja zabezpieczeń należących do jednej grupy jest w stanie poważnie za-grozić bezpieczeństwu całej bazy danych – zatem we-ryfikacja bezpieczeństwa takiego systemu powinna być wykonywana całościowo.

    Każda z poniższych kategorii zawiera wypunktowa-ne w formie pytań zalecenia, umożliwiające zaplano-wanie we własnym zakresie audytu bezpieczeństwa czy testów penetracyjnych bazy danych.

    Ekspozycja na poziomie sieciBaza danych często udostępniana jest w sieci (czy to lokalnej, czy np. Internecie) – na bezpieczeństwo ba-zy danych można więc spojrzeć tak jak na bezpieczeń-stwo każdej innej usługi sieciowej (np. serwer webowy, serwer poczty, serwer DNS, itd.).

    ZaleceniaSugerujemy zweryfikowanie takich elementów:

    • Na jakich interfejsach sieciowych / portach nasłu-chują usługi bazodanowe? – Niekiedy nie jest ko-nieczne nasłuchiwanie bazy danych na wszystkich interfejsach sieciowych albo na interfejsie dostęp-nym do Internetu.

    • Czy istnieje możliwość ataku na usługę z pozio-mu sieci? – Mamy tu na głównie myśli podatno-ści w obsłudze protokołu komunikacyjnego: w lo-kalizacji tego typu podatności przydatny może być tzw. skaner podatności; skuteczne ataki w tym miejscu często są związane z brakiem aktualiza-cji bezpieczeństwa bazy danych, o czym piszemy w dalszej części tekstu.

    • Czy w wykorzystywanej przez nas bazie znane są inne specyficzne elementy charakterystyczne dla komponentu nasłuchującego? – Np. ochrona za pomocą hasła komponentu nasłuchującego.

    Przykładowe dalsze informacje

    • Bezpieczeństwo komponentu Listener w Orac-le (do wersji 9 Oracle, domyślnie komponent ten posiada puste hasło dostępowe umożliwiające

    • nieuprawnioną zmianę informacji w bazie (może to spowodować chaos w działaniu placówki medycz-nej, czy wręcz zagrozić bezpieczeństwu pacjentów).

    W omówionym powyżej przykładzie odpowiednie za-bezpieczenie bazy danych tego typu może zminima-lizować wymienione zagrożenia, a tym samym pozy-tywnie wpłynąć na zysk kliniki. Jako rodzaj informa-cji wymagającej ochrony wskazaliśmy dane osobo-we / dane medyczne. Jakie jeszcze inne dane mogą być traktowane jako wrażliwe i wymagające ochrony? Odpowiedź na to pytanie pozostawiamy Czytelnikowi, jednocześnie wskazując kilka możliwości:

    • Dane o charakterze finansowym (np. salda kont bankowych, informacje płacowe, numery kart kre-dytowych).

    • Hasła dostępowe do systemów (często użytkowni-cy posiadają takie same hasła dostępowe do wielu systemów – zatem uzyskanie informacji o hasłach z jednej bazy danych może prowadzić do uzyska-nia dostępu do wielu innych systemów).

    • Informacje stanowiące o przewadze konkurencyj-nej firmy (np. dane klientów czy dostawców).

    • Jakiekolwiek inne dane firmowe o charakterze po-ufnym.

    Niejako podsumowując dotychczas opisane kwestie, spójrzmy ramowo na następujące zagadnienie doty-czące planowania prac, dotyczących bezpieczeństwa baz danych.

    Planowanie prac związanych z bezpieczeństwem bazy danych

    Planowanie to może wyglądać następująco:

    • Inwentaryzacja baz danych oraz przechowywa-nych w nich informacji (np. opisana w powyższym przykładzie baza przechowująca dane medyczne).

    • Określenie wartości skatalogowanych baz danych (istotne dane będziemy chcieli objąć szczególną ochroną).

    • Określenie czynników mogących zagrozić popraw-nemu funkcjonowaniu bazy (np. zewnętrzny atak z poziomu Internetu, awaria sprzętowa serwera, atak z sieci LAN, itd.) wraz z prawdopodobień-stwem wystąpienia (tzw. ryzykiem).

    • Określenie odporności naszej bazy na wszelakie zagrożenia określone powyżej (tym zagadnieniem w głównej mierze zajmiemy się w naszym artykule).

    • Rekonfiguracja bazy danych, jeśli jej odporność na wskazane wcześniej zagrożenia jest niska.

    Czytelnikowi może nasunąć się pytanie, ile czasu war-to poświęcić na realizację całego opisanego powy-żej procesu? Możemy odpowiedzieć – adekwatnie do

  • 2/201122

    OBRONA Bezpieczeństwo baz danych

    www.hakin9.org 23

    przejęcie kontroli nad listenerem): http://www.net-security.org/dl/articles/Integrigy _OracleDB_Liste-ner_Security.pdf

    • Weryfikację nasłuchiwania na określonych in-terfejsach sieciowych można wykonać np. li-nuksowym poleceniem: # netstat-tulpn. W tym przypadku poniżej, usługa mysqld nasłuchu-je jedynie na interface loopback (127.0.0.1): tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 28852/

    mysqld.• Informacje o robaku Slammer (atakującego SQL

    Server): http://en.wikipedia.org/wiki/SQL_Slammer• Przykład alertu zgłaszanego przez oprogramowa-

    nie klasy IDS (intrusion detection system) – snort: [**] [1:2003:8] MS-SQL Worm propagation attempt [**]

    [Classification: Misc Attack] [Priority: 2]

    04/19-23:16:14.032636 202.x.x.x:3352 -> x.x.x.x:1434

    UDP TTL:116 TOS:0x0 ID:55339 IpLen:20 DgmLen:404

    Len: 376

    [Xref => http://vil.nai.com/vil/content/

    v_99992.htm][Xref => http:

    //cgi.nessus.org/plugins/

    dump.php3?id=11214][Xref =>

    http://cve.mitre.org/cgi-bin/

    cvename.cgi?name=2002-0649][Xref

    => http://www.securityfocus.com/

    bid/5311][Xref => http://

    www.securityfocus.com/bid/5310].

    Poprawki bezpieczeństwaJak wspomnieliśmy wyżej, często udane ataki na bazę danych związane są z brakiem jej aktualizacji. W tym przypadku idea ataku może być następująca:

    • W oprogramowaniu bazy danych znajdowana jest krytyczne luka, umożliwiająca z poziomu sieci uzyskanie pełnej kontroli nad bazą danych.

    • W Internecie udostępniony jest exploit.• Producent bazy danych udostępnia aktualiza-

    cję. Po jej wgraniu, ewentualne uruchomienie ww. exploitu nie zakończy się sukcesem, jednak gdy aktualizacja nie zostanie wykonana, wrogi kod może umożliwić przejęcie kontroli nad bazą.

    ZaleceniaRozważając kwestię aktualizacji bazy danych warto zadać sobie pytania:

    • Czy posiadamy wykupiony pakiet umożliwiający instalowanie tego typu poprawek? – W przypadku niektórych baz danych – np. Oracle – stanowić to może spory koszt).

    • Czy aktualizacje bazy danych są wykonywane?• Czy baza instalowana jest jako pakiet systemu

    operacyjnego czy niezależnie?

    • Czy weryfikowana jest integralność aktualizacji? – Czy wiemy skąd pochodzą aktualizacje? Jeśli udałoby się dostarczyć nam wrogą aktualizację – istnieje możliwość zdalnego przejęcia kontroli nad bazą.

    • Czy aktualizacje wykonywane są ręcznie czy au-tomatycznie? – Niekiedy same aktualizacje mo-gą spowodować niepoprawne działanie całej bazy danych: manualne aktualizacje pozostawiają admi-nistratorowi możliwość szybkiej reakcji na ewentu-alne problemy.

    • Czy aktualizacje sprawdzane są wcześniej na ser-werach testowych?

    Przykładowe dalsze informacje

    • Informacje o wprowadzeniu poprawek do bazy da-nych Oracle, w tym łatających luki umożliwiają-ce pełen, nieuwierzytelniony dostęp z poziomu sieci: http://www.oracle.com/technology/deploy/security/pdf/2004alert68.pdf.

    Użytkownicy z wykorzystaniem, których działa baza danychAby ograniczyć wpływ negatywnych skutków naru-szenia bezpieczeństwa na cały system, warto rozwa-żyć uprawnienia użytkownika systemu operacyjnego, z którego wykorzystaniem uruchamiana jest baza.

    Przykład:W Internecie dostępna jest aplikacja umożliwiają-ca dostęp do poczty elektronicznej w firmie. System działa w oparciu o bazę danych MySQL. Baza działa z uprawnieniami użytkownika systemu operacyjnego root (administrator), a aplikacja wykorzystuje użytkow-nika bazodanowego posiadającego uprawnienia admi-nistracyjne w bazie danych. Skuteczny atak z poziomu Internetu na aplikację prowadzi do:

    • możliwości odczytu e-maili dowolnego użytkow-nika,

    • możliwości odczytu innych danych znajdujących się w bazie danych na tym serwerze,

    • możliwości pełnego dostępu do systemu operacyj-nego (uprawnienia administracyjne) oraz atakowa-nie dalszych systemów.

    Zalecenia

    • Czy użytkownik systemu operacyjnego, z które-go wykorzystaniem uruchamiana jest usługa ba-zodanowa, posiada uprawniania administracyjne? – Należy unikać takiej sytuacji.

    • Czy powyższy użytkownik posiada dodatkowe uprawnienia niekoniecznie wymagane do działa-

  • 2/201122

    OBRONA Bezpieczeństwo baz danych

    www.hakin9.org 23

    nia bazy danych? – Np. uprawniania od odczytu / zapisu plików, które nie są używane przez system bazodanowy.

    • Czy istnieje możliwość interaktywnego zalogowa-nia się na użytkownika bazodanowego, np. z wyko-rzystaniem SSH? – Nie powinniśmy stwarzać takiej możliwości.

    Przykładowe dalsze informacje

    • Unikanie uruchamiania usług SQL Server z uprawnieniami kont administracyjnych: http://www.sqlservercentral.com/blogs/brian_kelley/archive/2008/06/12/avoid-domain-admin-level-ac-counts-for-sql-server.aspx

    • Konfiguracja środowiska chroot w celu ogra-niczania ekspozycji systemu operacyjnego po ewentualnym ataku na usługę sieciową: http://www.securitum.pl/baza-wiedzy/publikacje/chroot-w-praktyce

    Użytkownicy bazodanowiKolejnym istotnym elementem przy weryfikacji bezpie-czeństwa bazy danych jest określenie uprawnień użyt-kowników definiowanych na poziomie bazy danych. Dobrą praktyką jest stosowanie tutaj zasady least pri-vileges, to znaczy uprawnienia użytkowników bazoda-nowych powinny być najmniejszymi, które są wymaga-ne do prawidłowego działania całości systemu.

    Zalecenia

    • Czy wybrani użytkownicy bazodanowi nie posia-dają nadmiernych uprawnień? – Np. uprawnienia administracyjne na bazie dla użytkownika bazoda-nowego skonfigurowanego w aplikacji webowej.

    • Czy w systemie wykonane jest mapowanie użytkow-ników bazodanowych na użytkowników systemu ope-racyjnego (popularne szczególnie w systemach Win-dows). Jeśli tak, to czy mapowanie jest poprawne?

    • Jakie konta bazodanowe mają uprawnienia admi-nistracyjne?

    • Którzy użytkownicy posiadają dostęp anonimowy do bazy danych? – użytkownicy demo / guest / itp.

    • Czy możliwy jest dostęp do bazy za pomocą użyt-kowników / haseł domyślnych? – Np. kombinacja DBSNMP/DBSNMP w bazie Oracle.

    • Czy użytkownicy bazodanowi posiadają wystar-czająco złożone hasła dostępowe?

    Przykładowe dalsze informacje

    • Zbiór informacji dotyczący tematyki haseł – ba-za Oracle http://www.red-database-security.com/whitepaper/oracle_passwords.html

    • Oprogramowanie cain & abel umożliwiające m.in. łamanie hashów haseł dla wybranych baz SQL: http://www.oxid.it/cain.html

    Ograniczenie funkcjonalności oferowanych przez bazę danychZgodnie z wspomnianą wcześniej zasadą least pri-vileges zaleca się minimalizację instalowanych oraz uruchamianych usług i funkcjonalności bazodano-wych. W wielu przypadkach takie domyślne funkcjo-nalności nie są wymagane do prawidłowego działa-nia bazy.

    ZaleceniaZalecenia zależą od konkretnej implementacji bazy danych. Dodatkowymi funkcjonalnościami mogą być przykładowo:

    • Całe usługi: np. serwer http apache, w przypadku Oracle.

    • Konkretne procedury czy grupy procedur i funkcji bazodanowych, np. procedura xp_cmdshell w sys-temie SQL Server umożliwiająca wykonanie pole-cenia systemu operacyjnego, użytkownikowi bazo-danowemu.

    • Domyślnie instalowane bazy o charakterze „de-mo”.

    Przykładowe dalsze informacje

    • Dokumentacja hardeningowa dla SQL Se-rver 2005 (rozdział SQL Server Settings): https:/ /www.c isecur i ty.org / tools2 /sqlser ver /CIS_SQL2005_Benchmark_v1.2.0.pdf

    Logowanie (księgowanie) dostępu do bazy danychAby zapewnić systemowi właściwość zwaną rozliczal-nością, należy w odpowiedni sposób logować (księgo-wać) operacje wykonywane na bazie danych. Tego ty-pu logi mogą okazać się przydatne, gdy będziemy po-trzebowali prześledzić ewentualną historię zdarzeń przy naruszeniu bezpieczeństwa bazy danych. W ta-kim przypadku będziemy wiedzieć jaka operacja, kie-dy oraz przez kogo została wykonana na bazie.

    Zalecenia

    • Czy próby uwierzytelnienia (udane, nieudane) są logowane?

    • Czy logowane są operacje (zapytania SQL) na ba-zie danych?

    • W jakim miejscu składowane są logi zawierające ww. informacje? Kto ma do nich dostęp? Jak za-pewniona jest ich integralność? Czy są wykony-wane kopie zapasowe logów?

  • 2/201124

    OBRONA Bezpieczeństwo baz danych

    www.hakin9.org 25

    • Czy logowanie następuje do bazy danych czy na poziomie systemu operacyjnego?

    • Czy księgowanie wykonywane jest jedynie lokalnie czy również na zdalny system?

    SzyfrowanieJako „szyfrowanie” rozumiemy w tym przypadku me-chanizmy zapewniające poufność, integralność (trans-misji oraz samych przechowywanych danych) a także bezpieczne uwierzytelnienie użytkowników łączących się z bazą. Zastosowane mechanizmy kryptograficzne zależą od typu danych, które chronimy, a także spe-cyfiki systemu IT, w którym dane te są przetwarzane. Mechanizmy te możemy rozważać co najmniej w kilku perspektywach.

    Zalecenia

    • Czy proces uwierzytelnienia do bazy jest odpo-wiednio zabezpieczony? – Czy dane uwierzytel-niające – np. hasło przesyłane są w sieci w bez-pieczny sposób?

    • Czy wszystkie dane przesyłane pomiędzy klien-tem bazodanowym a serwerem są zaszyfrowane? – Zapewnienie poufności i integralności transmisji.

    • Czy szyfrowany dostęp do bazy jest wymuszany na klientach bazodanowych?

    • Czy dane znajdujące się w bazie danych przecho-wywane są w formie zaszyfrowanej? – Zapewnie-nie poufności i integralności danych.

    Przykładowe dalsze informacje

    • Wymuszanie szyfrowania (komunikacji klient-ser-wer) na bazie SQL Server:

    h t tp : / / msdn .m ic r oso f t .c om / en - us / l i b ra r y/ms189067.aspx,

    h t t p : / / m s d n . m i c r o s o f t . c o m / e n - u s / l i b r a r y/ms191192.aspx.

    Bezpieczeństwo w warstwie aplikacji korzystających z bazy danychTematyka związana z zagadnieniem bezpieczeństwa aplikacji jest bardzo szeroka. W tekście jedynie za-znaczamy jej pewne powiązanie z bezpieczeństwem baz danych.

    Jednym z częstych błędów bezpieczeństwa w apli-kacjach wpływających na bezpieczeństwo bazy da-nych jest podatność SQL injection. Istota problemu polega na możliwości nieautoryzowanej zmiany za-pytania SQL generowanego po stronie aplikacji. Takie działanie umożliwia często atakującemu na pełen do-stęp do bazy danych – zarówno w trybie odczytu jak i zapisu. Niekiedy również ta droga prowadzi do otrzy-mania dostępu na poziomie systemu operacyjnego.

    Dla porządku, warto również w tym momencie wspo-mnieć o innych, często spotykanych problemach, mo-gących prowadzić do naruszenia bezpieczeństwa ba-zy danych:

    • Przechowywanie po stronie klienckiej informacji dostępowych do serwera bazodanowego. Problem występuje często w aplikacjach desktopowych ko-rzystających z bazy danych– na lokalnych sta-cjach użytkowników (np. w rejestrze systemu Win-dows) przechowywane są login/hasło użytkownika mającego pełen dostęp do bazy danych.

    • Brak odpowiednich mechanizmów kryptograficz-nych służących do zabezpieczenia połączenia po-między klientem a serwerem (więcej informacji w punkcie: „szyfrowanie” w niniejszym artykule).

    Zalecenia

    • Czy w aplikacji następuje odpowiednia walidacja danych otrzymywanych od użytkowników?

    • Czy aplikacja korzysta z jednego użytkownika bazodanowego w celu łączenia się do bazy da-nych? – W przypadku wystąpienia SQL injection taka konfiguracja umożliwia atakującemu dostęp do całej bazy – jest to szczególnie groźne, gdy ta-ki użytkownik ma uprawnienia administracyjne na bazie.

    • Czy aplikacja korzysta z tzw. zapytań parametry-zowanych w celu dostępu do danych? – Mecha-nizm ten odpowiednio wykorzystany potrafi niemal w 100% ochronić przed SQL injection.

    • Czy po stronie klienckiej przechowywane są dane dostępowe do serwera bazodanowego?

    Przykładowe dalsze informacje

    • SQL injection wg OWASP: http://www.owasp.org/index.php/SQL_Injection

    • Przykład bardziej zaawansowanych rozważań o SQL injection: http://www.securitum.pl/baza-wiedzy/publikacje/sql-injection-nietypowy-wariant-ataku

    Miejsce składowania danych w systemie plikówOstatecznie baza danych przechowuje informacje na systemie plików (choć w określonych przypadkach dane te mogą być przechowywane np. jedynie w pa-mięci).

    Dostęp do tych plików uzyskujemy zazwyczaj nie bezpośrednio (dostęp do pliku) tylko przy pomocy za-pytania SQL (łącząc się z tzw. RDBMS, który między innymi dba o uwierzytelnienie/autoryzację użytkow-ników łączących się z bazą). Użytkownicy (zazwy-czaj lokalni) mający dostęp do plików przetwarzanych

  • 2/201124

    OBRONA Bezpieczeństwo baz danych

    www.hakin9.org 25

    przez RDBMS mogą spróbować uzyskać do nich do-stęp bezpośredni, omijając tym samym mechanizmy uwierzytelnienia i autoryzacji oferowane przez bazę.

    Kolejną kwestią związaną z umiejscowieniem pli-ków bazodanowych jest nieprzerwany dostęp do całej bazy. Jeśli dostęp do danych w systemie plików (np. z powodu awarii dysku twardego) zostanie utracony, tracony jest również dostęp do konkretnych przetwa-rzanych w bazie danych. Warto zatem rozważyć wdro-żenie odpowiednich mechanizmów zapewniających nieprzerwane działanie bazy w przypadku tego typu awarii.

    Na koniec poruszymy jeszcze jedną kwestię zwią-zaną z dostępnością całego systemu. Otóż niekiedy przetwarzane w bazie informacje składowane są na tej samej partycji, co pliki wchodzące w skład syste-mu operacyjnego, na którym uruchomiona jest baza danych. W przypadku zapełnienia takiej partycji czę-sto przestaje działać poprawnie cały system operacyj-ny. Warto może zatem wydzielić osobną partycję prze-chowującą pliki bazodanowe – niezależną od partycji systemowej.

    Zaznaczmy jeszcze, że tematyka wysokiej dostęp-ności bazy jest bardzo szeroka – w niniejszym tekście jedynie ją wskazujemy w kontekście plików bazodano-wych.

    Zalecenia

    • Czy pliki bazodanowe znajdują się na odpowied-nim typie systemu plików? – Umożliwiającym nadanie odpowiednich uprawnień? np. NTFS, a nie FAT?

    • Czy pliki bazodanowe na poziomie systemu plików są dostępne (odczyt/zapis) tylko dla użytkownika z wykorzystaniem którego działa baza danych?

    • Czy awaria miejsca przeznaczonego na składowa-nie danych bazy powoduje niedostępność do ba-zy danych? – Czy mamy wdrożone mechanizm ty-pu RAID? Czy wykorzystujemy redundantnie pod-łączoną macierz zewnętrzną?

    • Czy dane składujemy na partycji oddzielnej od systemowej?

    Kopie zapasoweZ uwagi na najczęściej dość wysoką wartość infor-macji przetwarzanych w bazach danych konieczno-

    ścią jest wykonywanie okresowych kopii bezpieczeń-stwa bazy. Przy wykonywaniu backupów warto rozwa-żyć kwestie łączące się z realizacją kopii zapasowych w ogóle, a także elementy specyficzne dla samej ba-zy danych.

    Zalecenia

    • Czy wykonywane są kopie zapasowe wszystkich instancji baz danych?

    • Czy wykonywana jest kopia zapasowa bazy syste-mowej? – Często brak takiej kopii może oznaczać problemy przy próbie przywrócenia danych z bac-kupu.

    • Czy wykonywane są testy poprawności wykony-wania kopii zapasowych? – Próba pełnego odtwo-rzenia bazy z wykonanej wcześniej wykonanej ko-pii.

    • Na jakie nośniki wykonywane są kopie zapasowe?• Czy dane na zużytych nośnikach usuwa się w spo-

    sób trwały?• W jaki sposób chroni się nośniki zawierające bac-

    kupy przed dostępem osób nieuprawionych?

    PodsumowanieW artykule przedstawiliśmy, naszym zdaniem, najistot-niejsze elementy dotyczące bezpieczeństwa bazy da-nych. Pewne aspekty – np. bezpieczeństwo fizyczne, dostępność bazy, bezpieczeństwo sieci czy systemu operacyjnego, na którym przetwarzane są informacje – zostały wskazane jedynie hasłowo. Jednakże wska-zując zalecania, staraliśmy się formułować je w na tyle ogólnej formie, aby każdy z czytelników mógł dostoso-wać i rozszerzyć je pod własne, specyficzne potrzeby – każda bowiem baza danych wymaga dedykowane-go spojrzenia na bezpieczeństwo przechowywanych w niej informacji.

    MICHAŁ SAJDAKProwadzi testy penetracyjne oraz szkolenia z zakresu bezpie-czeństwa. Posiadacz certy�katu CISSP.Obecnie pracuje w �rmie Securitum.Kontakt: [email protected]

    Polecana Literatura• Implementing Database Security and Auditing: Includes Examples for Oracle, SQL Server, DB2 UDB, Sybase - Digital Press (May 2, 2005)• The Database Hacker's Handbook: Defending Database Servers - Wiley (July 14, 2005)• Dokumentacje hardeningnowe The Center for Internet Security - http://cisecurity.org/

  • 2/201126

    OBRONA Zarządzanie bezpieczeństwem danych osobowych. Kwestie prawne e-commerce

    www.hakin9.org 27

    Czy właściciele sklepów internetowych są świa-domi przepisów prawnych, które regulują kwe-stię ochrony danych osobowych ich klientów?Przedsiębiorcy prowadzący sklepy internetowe są,

    a przynajmniej powinni być, świadomi regulacji praw-nych, którym podlegają prowadząc taką działalność. Jest to oczywiście kodeks cywilny oraz między innymi ustawa z 2 marca 2000 r. o ochronie niektórych praw konsumentów oraz odpowiedzialności za szkodę wy-rządzoną przez produkt niebezpieczny, czy też usta-wa z dnia 27 lipca 2002 r. o szczególnych warunkach sprzedaży konsumenckiej. Dotyczy ich również w pew-nym stopniu ustawa z dnia 18 lipca 2002 r. o świadcze-niu usług drogą elektroniczną.

    Istotną różnicą między prowadzeniem sprzedaży de-talicznej w normalnym sklepie a sprzedażą przez Inter-net jest utrata przez klienta anonimowości. W pierw-szym przypadku sprzedawca zwykle nie pozyskuje da-nych osobowych kupującego, jedynym dowodem za-kupu jest paragon „na okaziciela”. Przy sprzedaży na odległość niezbędne jest uzyskanie przynajmniej da-nych adresowych potrzebnych do dostarczenia towaru, a często gromadzone są również dane pomocnicze ta-kie jak adres e-mail, numer telefonu czy różnego rodza-ju informacje o preferencjach zakupowych klienta.

    Z pewnym niepokojem można zauważyć, że kwestia ochrony danych osobowych klientów jest bardzo czę-

    sto traktowana przez właścicieli sklepów z dużą pobłaż-liwością. Wniosek taki można wyciągnąć między inny-mi na podstawie badania przeprowadzonego przez ser-wis Sklepy24.pl w ramach raportu „e-Handel Polska 2009”. Ankiety zebrane z ponad 600 sklepów interne-towych pokazują, że tylko co dziesiąty sklep zarejestro-wał zbiór danych osobowych u Generalnego Inspekto-ra Danych Osobowych, a jedynie połowa właścicieli ma pewność, że centrum przetwarzania danych, w którym znajdują się serwery obsługujące sklep jest dobrze za-bezpieczona przed włamaniami, pożarem czy proble-mami z zasilaniem.

    Co ciekawe, badanie Eurobarometru z 2008 r. wska-zuje, że właścicielowi sklepu internetowego powinno szczególnie zależeć na wzbudzeniu zaufania i zapew-nieniu rzeczywistego bezpieczeństwa danych osobo-wych swoich klientów. Polacy są na pierwszym miejscu w Unii Europejskiej jako deklarujący najwyższą świado-mość praw związanych z danymi osobowymi (43% ba-danych). Ponad połowa ankietowanych (55%) deklaro-wała troskę o dane osobowe ujawniane w Internecie.

    W dalszej części artykułu omówię najważniejsze, z punktu widzenia przedsiębiorcy prowadzącego sklep internetowy, zagadnienia związane z ochroną danych osobowych klientów. Skupimy się przede wszystkim na zagadnieniach praktycznych, z naciskiem na kwestie techniczne (sklep internetowy to w znakomitej większo-

    Zarządzanie bezpieczeństwem danych osobowych. Kwestie prawne e-commerceDane osobowe klientów sklepu internetowego – na co powinien zwrócić uwagę właściciel sklepu, żeby nie tylko działać w zgodzie z ustawą o ochronie danych osobowych, ale również budować zaufanie swoich klientów. Czym są dane osobowe, jak je zabezpieczyć, na co zwrócić uwagę?

    Marcin Engelmann

    Dowiesz się:• jakie przepisy prawne wpływają na przetwarzanie danych w sklepie internetowym?• jakie wymagania musi spełniać oprogramowanie sklepu internetowego• w jaki sposób zabezpieczyć sklep internetowy przed atakami z zewnątrz•