Temat: Zagrożenia i anomalie w systemach komputerowych. Metody detekcji. inż. Mateusz Olejnik, KNI 2012, 3.04.2012

Podobne dokumenty
Trojan bankowy Emotet w wersji DGA

Architektura komputerów

Q E M U.

Antywirusy. Marcin Talarczyk. 2 czerwca Marcin Talarczyk Antywirusy 2 czerwca / 36

Linux vs rootkits. - Adam 'pi3' Zabrocki

Struktury systemów operacyjnych

Infekowanie plików EXE PE amdfanatyk

1) Czym jest architektura systemu Windows 7 i jak się ją tworzy? 2) Jakie są poszczególne etapy uruchomienia systemu Windows 7?

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

PROGRAMY NARZĘDZIOWE 1

Budowa systemów komputerowych

Architektura systemu komputerowego

Komputery przemysłowe i systemy wbudowane

Analiza Malware Win32.KeyloggerSpy

Logiczny model komputera i działanie procesora. Część 1.

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Rootkity - zagrożenie czy plotki? Mateusz Sell, Dariusz Świderski MKS Sp. z o.o.

Codecave jest to nieużywana pamięć uruchomionej aplikacji, do której można wstrzyknąć dowolny kod a następnie wykonać go.

Zarządzanie pamięcią w systemie operacyjnym

Programowanie Niskopoziomowe

System pamięci. Pamięć wirtualna

Architektura komputerów

Malware przegląd zagrożeń i środków zaradczych

BEZPIECZEŃSTWO W SIECIACH

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

dr inż. Jarosław Forenc

Plan na dziś. Co to jest wirus komputerowy? Podział wirusów komputerowych Jak działają wirus komputerowe? Jak zabezpieczyć się przed wirusami?

Działanie systemu operacyjnego

Spis treści. Wstęp 15

Działanie systemu operacyjnego

Analiza malware Remote Administration Tool (RAT) DarkComet

Metody włamań do systemów komputerowych p. 1/15

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

Działanie systemu operacyjnego

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

Podstawy. Pamięć wirtualna. (demand paging)

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Architektura komputerów wer. 7

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Zarządzanie pamięcią operacyjną

Robaki sieciowe. + systemy IDS/IPS

Lab 9 Podstawy Programowania

Księgarnia PWN: Kevin Kenan - Kryptografia w bazach danych. Spis treści. Podziękowania O autorze Wprowadzenie... 15

Test z systemów operacyjnych

Mikroinformatyka. Wielozadaniowość

Ćwiczenie 3. Konwersja liczb binarnych

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Wykład 7. Zarządzanie pamięcią

dr inż. Jarosław Forenc

Struktura systemów komputerowych

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Projekt PaX. Łata na jądro systemu operacyjnego Linux Strona projektu: pax.grsecurity.net

Działanie systemu operacyjnego

Narzędzie konfiguracji rozruchu

Pamięć wirtualna. Jan Tuziemski Źródło części materiałów: os-book.com

dr inż. Jarosław Forenc

dr inŝ. Jarosław Forenc

Wykład 13. Bezpieczeństwo. Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Strumienie, pliki. Sortowanie. Wyjątki.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Architektura komputerów wer. 3

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Pojęcie wirusa komputerowego

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

O historycznym systemie DOS. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

1. Pliki i ich organizacja

Kernel Kompilacja jądra

System pamięci. Pamięć wirtualna

Architektura komputerów

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Bezpieczeństwo w sieci Internet Rodzaje złośliwego oprogramowania

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Necurs analiza malware (1)

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

INFORMATYKA KLASA VII Wymagania na poszczególne oceny

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Opis efektów kształcenia dla modułu zajęć

Wirusy w systemie Linux. Konrad Olczak

Temat: Rootkit stworzony w oparciu o technikę "SSDT hooking". Autor: Damian Tykałowski. I. Cel projektu

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

LEKCJA TEMAT: Zasada działania komputera.

Urządzenia wejścia-wyjścia

KLASA 7 szk.podst. Stopień dostateczny Uczeń: wymienia cztery dziedziny,

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Botnet Zeus - analiza w laboratorium CERT

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Systemy operacyjne III

GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot).

Czym jest kryptografia?

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Tworzenie partycji i dysków logicznych

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

Transkrypt:

Temat: Zagrożenia i anomalie w systemach komputerowych. Metody detekcji. inż. Mateusz Olejnik, KNI 2012, 3.04.2012 1

Część I - Atak: 1. Złośliwe oprogramowanie definicje i taksonomia. 2. Środowiska działania - zależności. 3. Strategie infekcji. 4. Wirusy rezydujące w pamięci. 5. Metody ukrywania wirusów, wirusy polimorficzne i metamorficzne. 6. Co jeszcze? Część II - Obrona: 1. Podejścia i techniki obronne. 2. Skanowanie rozwój metod. 3. Emulacja kodu, heurystyka, sprawdzanie spójności, sand-boxing. 4. Problemy skanowania pamięci, propozycje rozwoju. inż. Mateusz Olejnik, KNI 2012, 3.04.2012 2

A virus is a program that is able to infect other programs by modifying them to include a possibly evolved copy of itself. Dr Frederic B. Cohen (1984r.) A computer virus is a program, that recursively and explicitly copies a possibly evolved version of itself. Peter Szor (2005r.) inż. Mateusz Olejnik, KNI 2012, 3.04.2012 3

Wirusy (viruses), zarazki (germs); Robaki (worms); Bomby logiczne (logic bombs); Konie trojańskie (trojan horses); Exploity (exploits); Key loggery (keyloggers); Rootkity (rootkits); Ogólnie przyjęty schemat nazewniczy: [<malware_type>://][<platform>/]<family_name>[.<group_name>] [.<infective_length>][.<variant>[<devolution>]][<modyfiers>] przykład: Virus://W32/Beast.4174.A inż. Mateusz Olejnik, KNI 2012, 3.04.2012 4

Zależność od architektury systemu komputerowego: różny proces ładowania dla różnych systemów operacyjnych różny układ pamięci operacyjnej (schematów adresacji) Metody: implementacja dla dwóch różnych architektur w kodzie wirusa (wirus sprawdza architekturę i sam dokompilowuje część swojego kodu) wirusy w pseudoformacie (kodzie pośrednim) w obu przypadkach konieczność dodania fragmentu kodu rozpoznającego, skompilowanego w danej architekturze inż. Mateusz Olejnik, KNI 2012, 3.04.2012 5

Zależność od jednostki CPU: ta sama operacja różnie zakodowana NOP -> 0x90 (Intel CPU) NOP -> 0x01 (VAX) zmiana kodu operacji w kolejnych wersjach procesora (stary kod operacji nie jest już wspierany) Metody: zamiana kodu operacji gdy ta znajduje się już w kolejce prefetch procesora (Intel 8088, 8086) trudność w debugowaniu inż. Mateusz Olejnik, KNI 2012, 3.04.2012 6

Harvard Architecture wysoki koszt dodatkowych pinów procesora, zapewniających połączenie z dwoma pamięciami Von Neuman Architecture (z elementami architektury Harvardzkiej dostęp do cache) inż. Mateusz Olejnik, KNI 2012, 3.04.2012 7

Zależność od systemu operacyjnego (i jego wersji) tryby user-mode i kernel-mode w różnych systemach operacyjnych różny dostęp do interfejsów sieciowych, interfejsów I/O format pliku PE w systemach Windows poprawki eliminujące podatności występujące we wcześniejszych wersjach systemu operacyjnego Metody: niektóre wirusy wymagają tylko niewielkich poprawek aby przenieść je z systemu Windows NT/XP na Windows 7 wirusy wykorzystujące podatności w maszynach wirtualnych (np. JVM) inż. Mateusz Olejnik, KNI 2012, 3.04.2012 8

Zależność od systemu plików strumienie NTFS (! ) kompresja plików NTFS, wykorzystywana przez niektóre wirusy Zależność od formatu pliku wirusy plików EXE na DOS ie, NE na 16-bit Windows i OS/2 wirusy plików PE na 32 bit Windows wirusy plików PE+ na 64-bit Windows wirusy bibliotek łączonych dynamicznie (DLL) wirusy plików ELF na Unix (zarówno 32 jak i 64-bit) wirusy sterowników (rezydujące w pamięci) wirusy makr i skryptowe (także AUTORUN.INF od Win95 wzwyż) inż. Mateusz Olejnik, KNI 2012, 3.04.2012 9

Wirusy rozruchowe (Boot Viruses) infekcje MBR (zamiana Boot Strap Loader a) wykorzystanie INT 13h w celu czytania i pisania do dysku kopiowanie MBR na koniec dysku, zastępowanie MBR (i pełnienie jego funkcji przez wirus), zmiana w Partition Table inż. Mateusz Olejnik, KNI 2012, 3.04.2012 10

Wirusy infekujące pliki wirusy nadpisujące Algorytm: 1. Znajdź wszystkie (*.*) nowe pliki hosta w bieżącym katalogu. 2. Otwórz plik do zapisu. 3. Nadpisz kodem wirusa plik hosta (może zmienić rozmiar pliku hosta). inż. Mateusz Olejnik, KNI 2012, 3.04.2012 11

Wirusy infekujące pliki wirusy nadpisujące losowe fragmenty pliku hosta + Trudne do wykrycia przez skaner/emulator kodu - Kod wirusa może się nie wykonać inż. Mateusz Olejnik, KNI 2012, 3.04.2012 12

Wirusy infekujące pliki wirusy dopisujące się na końcu pliku wirus przechowuje pierwsze 3 bajty pliku w swoim kodzie w miejsce wyciętych bajtów wirus wstawia instrukcję skoku a) JMP start_of_virus b) CALL start_of_virus c) PUSH start_of_virus RET inż. Mateusz Olejnik, KNI 2012, 3.04.2012 13

Wirusy infekujące pliki wirusy wpisujące się na początku pliku wirus wpisuje swój kod na początku pliku wykonywalnego właściwy kod programu przesunięty zostaje o liczbę bajtów równą rozmiarowi wirusa trudności w czasie wykonania (parametry wejściowe) próba przechowywania oryginalnego programu w tymczasowym pliku inż. Mateusz Olejnik, KNI 2012, 3.04.2012 14

Wirusy infekujące pliki wirusy pasożytnicze wirus wpisuje swój kod na początku pliku wykonywalnego, zastępując początkowe bajty kodu programu zastąpione bajty dopisywane są na końcu pliku naprawa wymaga odliczenia pewnej liczby bajtów od końca pliku w celu wpisania ich na początek pliku inż. Mateusz Olejnik, KNI 2012, 3.04.2012 15

Wirusy infekujące pliki wirusy wypełniające (cavity virus) wirusy wypełniają wolne miejsca w pliku zera w pliku binarnym, spacje (0x20) nie zwiększają rozmiaru pliku hosta inż. Mateusz Olejnik, KNI 2012, 3.04.2012 16

Wirusy infekujące pliki podzielone wirusy wypełniające wirusy wypełniają wolne miejsca w pliku szukają wielu takich miejsc zastępowanie punktu wejścia przez punkt wejścia wirusa konieczność dodawania instrukcji JMP inż. Mateusz Olejnik, KNI 2012, 3.04.2012 17

Wirusy infekujące pliki wirusy kompresujące wirus kompresuje kod programu, tak aby po dodaniu swojego kodu całkowity rozmiar pliku nie zmienił się wirus modyfikuje entry-point tak aby wskazywał na kod wirusa wirus zawiera dekompresor, który rozpakowuje kod programu do pamięci inż. Mateusz Olejnik, KNI 2012, 3.04.2012 18

Wirusy infekujące pliki technika wbudowanego deszyfratora (ser szwajcarski) entry-point modyfikowany jest tak aby wskazywał na pierwszy fragment deszyfratora deszyfrator odszyfrowuje kod wirusa zastąpiony oryginalny kod znajduje się w kodzie wirusa bardzo trudne do wykrycia inż. Mateusz Olejnik, KNI 2012, 3.04.2012 19

Wirusy infekujące pliki wirusy nadpisujące punkt wejścia (EPO entry point obscuring) utrudnia odnalezienie przez tzw. skanowanie szybkie wyszukuje specyficzne instrukcje (JMP, CALL etc.) pojawiające się w entry-poincie, jednak zamiast je zastąpić wstawia swój kod po odpowiedni adres inż. Mateusz Olejnik, KNI 2012, 3.04.2012 20

Wirusy infekujące pliki wirusy modyfikujące wywołania API jedna z najpopularniejszych zaawansowanych technik infekcji, wirus podmienia adresy odwołań do API w sekcji code implementacja Microsoft -> CALL DWORD PTR [] implementacja Borland -> JMP DWORD PTR [] podmienienie wywołania do ExitProcess() inż. Mateusz Olejnik, KNI 2012, 3.04.2012 21

Wirusy infekujące pliki wirusy podmieniające tablice importów w pliku PE znajduje się tablica z zaimportowanymi adresami odwołań do API (np. GetProcessAdress(), FindFirstFileA() ) wirus podmienia adresy odwolań, tak aby wskazywały na jego kod inż. Mateusz Olejnik, KNI 2012, 3.04.2012 22

wirusy bezpośrednio atakujące pliki (direct-action viruses), po wczytaniu do pamięci razem z programem hosta, wyszukują nowe obiekty (pliki) do zarażenia (sekwencja FindFirst(), FindNext() ) wirusy rezydujące w pamięci (memory-resident viruses) przejmują kontrolę nad systemem, alokują dla siebie pamięć, ładują się do niej, aktywują a na końcu przenoszą sterowanie do swojego kodu Ale zaraz, jak to przejmują kontrolę nad systemem? inż. Mateusz Olejnik, KNI 2012, 3.04.2012 23

Boot wirusy i podmiana wywołań w tabeli przerwań inż. Mateusz Olejnik, KNI 2012, 3.04.2012 24

Wirusy zarażające procesy User Mode Kernel Mode wirus ładuje się przed procesem hosta wirus pozostaje w pamięci jako sterownik oraz podmienia przerwanie INT 2Eh wirus ładuje się jako osobny wątek wirus alokują pamięć w trybie user mode i tam się przenosi wirus ładuje się jako usługa wirus ładuje się jako biblioteka DLL poprzez modyfikację kluczy rejestru polecenie: driverquery inż. Mateusz Olejnik, KNI 2012, 3.04.2012 25

antydeasemblacja szyfrowanie kodu, obfuskacja, zamiana jednego polecenia assemblera na inne, równoważne w celu zmylenia deasmblera inż. Mateusz Olejnik, KNI 2012, 3.04.2012 26

antydebugging hookowanie przerwań INT 1 oraz INT 3 (używanych przez debuggery do breakpoint ów), sprawdzanie stosu w czasie wykonywania się wirusa (w celu wykrycia obecności debuggera), użycie API IsDebuggerPresent() (sic! -> http://msdn.microsoft.com/en-us/library/ windows/desktop/ms680345(v=vs.85).aspx ), sprawdzanie kluczy rejestru oraz tablicy załadowanych sterowników, blokada klawiatury oraz wiele innych inż. Mateusz Olejnik, KNI 2012, 3.04.2012 27

antyheurystyka statyczna heurystyka polega na formacie plików oraz analizie fragmentów kodu, heurystyka dynamiczna emuluje środowisko i wykonuje kod. Wirusy w celu uniknięcia wykrycia pakują i kompresują swój kod, dołączają się nie tylko do jednej, ale do wielu sekcji w pliku, szyfrują nagłówek oryginalnego pliku, który jest zapisywany na końcu zainfekowanego pliku, zmieniają nazwy poszczególnych sekcji i wykorzystują wiele innych technik. inż. Mateusz Olejnik, KNI 2012, 3.04.2012 28

antyemulacja wirusy wykorzystują instrukcje FPU, nie tylko CPU, wirusy ustawiają uchwyt, który przekazuje kontrolę do programu hosta w przypadku wystąpienia wyjątku, używają długich pętli, które pozornie nic nie robią, a tak naprawdę służą do wytworzenia klucza szyfrującego i zaszyfrowania kodu wirusa wirusy rozpoznające pliki kozły ofiarne specjaliści badający działanie wirusów, tworzą proste pliki, a następnie infekują je wirusem w celu zrozumienia jego działania. Nowoczesne wirusy są w stanie rozpoznać takie pliki i ich nie atakują inż. Mateusz Olejnik, KNI 2012, 3.04.2012 29

wirusy polimorficzne Wirus zmienia swój wygląd w pliku hosta np. poprzez szyfrowanie swojego kodu każdorazowo innym kluczem i dołączanie deszyfratora do swojego kodu. Deszyfrator jest zmutowany w sposób losowy, tak aby nie mógł być łatwo rozpoznany. wirusy metamorficzne Wirus zmienia swój wygląd w pliku hosta, nie korzystając jednak z szyfrowania, ale poprzez dopisanie/skasowanie pewnych instrukcji śmieciowych do swojego kodu. Taki wirus może także np. zmieniać kodowanie instrukcji na poziomie assemblera (zmiana jednej instrukcji na drugą, o innym kodzie ale tej samej funkcji). Najtrudniejsze w rozpoznaniu są wirusy zamieniające całe bloki logiczne. inż. Mateusz Olejnik, KNI 2012, 3.04.2012 30

robaki internetowe i konie trojańskie podatności i exploity ataki przepełniające bufor i nadpisujące stos inż. Mateusz Olejnik, KNI 2012, 3.04.2012 31

1. Peter Szor, The art of computer virus research and defense, Symantec Press, 2005 2. Virus Bulletin, http://www.virusbtn.com/index 3. http://www.symantec.com/connect/security/articles (sekcja: Malicious Code) 4. http://www.symantec.com/connect/articles/detectingcomplex-viruses inż. Mateusz Olejnik, KNI 2012, 3.04.2012 32

W przygotowaniu na przyszły tydzień obrona, czyli jak mamy sobie radzić z tymi łobuzami? inż. Mateusz Olejnik, KNI 2012, 3.04.2012 33