Praktyczna Analiza Malware. Przewodnik po usuwaniu z - Helion
ebook
Autor: Michael Sikorski, Andrew HonigISBN: 9788301219727
stron: 756, Format: ebook
Data wydania: 2021-08-30
Księgarnia: Helion
Cena książki: 95,40 zł (poprzednio: 159,00 zł)
Oszczędzasz: 40% (-63,60 zł)
Tagi: Bezpiecze
Osoby które kupowały "Praktyczna Analiza Malware. Przewodnik po usuwaniu z", wybierały także:
- Certified Information Security Manager Exam Prep Guide 230,00 zł, (29,90 zł -87%)
- Nmap Network Exploration and Security Auditing Cookbook 157,37 zł, (29,90 zł -81%)
- Malware Analysis Techniques 157,37 zł, (29,90 zł -81%)
- Cybersecurity Career Master Plan 142,38 zł, (29,90 zł -79%)
- API Testing and Development with Postman 142,38 zł, (29,90 zł -79%)
Spis treści
Praktyczna Analiza Malware. Przewodnik po usuwaniu złośliwego oprogramowania eBook -- spis treści
- Okładka
- Strona tytułowa
- Strona redakcyjna
- Spis treści
- Ostrzeżenie
- O autorach
- O recenzencie technicznym
- O współpracujących autorach
- Przedmowa
- Podziękowania
- Indywidualne podziękowania
- Wprowadzenie
- Czym jest analiza malware?
- Wymagania wstępne
- Nauka w praktyce
- Co znajduje się w książce?
- 0. Elementarz analizy malware
- Cel analizy malware
- Techniki analizy złośliwego oprogramowania
- Podstawowa analiza statyczna
- Podstawowa analiza dynamiczna
- Zaawansowana analiza statyczna
- Zaawansowana analiza dynamiczna
- Rodzaje złośliwego oprogramowania
- Ogólne zasady analizy malware
- Część 1. Analiza podstawowa
- 1. Podstawowe techniki statyczne
- Skanowanie antywirusowe przydatny pierwszy krok
- Haszowanie odcisk palca malware
- Znajdowanie łańcuchów
- Pakowanie i obfuskacja przez malware
- Spakowane pliki
- Wykrywanie spakowanych programów za pomocą PEiD
- Format plików Portable Executable
- Dołączane biblioteki i funkcje
- Dołączanie statyczne, w czasie wykonywania i dynamiczne
- Eksplorowanie funkcji dołączanych dynamicznie za pomocą Dependency Walker
- Importowane funkcje
- Eksportowane funkcje
- Analiza statyczna w praktyce
- PotentialKeylogger.exe rozpakowany plik wykonywalny
- PackedProgram.exe ślepy zaułek
- Nagłówki i sekcje plików PE
- Badanie plików PE za pomocą PEview
- Podgląd sekcji zasobów za pomocą Resource Hackera
- Korzystanie z innych narzędzi dla plików PE
- Podsumowanie nagłówka Pe
- Podsumowanie
- 2. Analiza malware na maszynach wirtualnych
- Struktura maszyny wirtualnej
- Tworzenie maszyny do analizy malware
- Konfigurowanie VMware
- Korzystanie z maszyny do analizy malware
- Podłączanie malware do internetu
- Podłączanie i odłączanie urządzeń peryferyjnych
- Wykonywanie migawek
- Przesyłanie plików z maszyny wirtualnej
- Ryzyka związane z wykorzystaniem VMware do analizy malware
- Nagrywanie/odtwarzanie komputer na biegu wstecznym
- Podsumowanie
- 3. Podstawowa analiza dynamiczna
- Piaskownice podejście tanie i szybkie
- Użycie piaskownicy dla malware
- Wady piaskownic
- Uruchamianie malware
- Monitorowanie za pomocą Process Monitora
- Interfejs narzędzia procmon
- Filtrowanie w procmon
- Wyświetlanie procesów za pomocą Process Explorera
- Interfejs Process Explorera
- Korzystanie z opcji weryfikacji
- Porównywanie łańcuchów
- Korzystanie z Dependency Walker
- Analiza złośliwych dokumentów
- Porównywanie migawek rejestru za pomocą Regshota
- Udawanie sieci
- Korzystanie z ApateDNS
- Monitorowanie za pomocą Netcat
- Analizowanie pakietów za pomocą Wiresharka
- Korzystanie z INetSim
- Podstawowe narzędzia analizy dynamicznej w praktyce
- Podsumowanie
- Piaskownice podejście tanie i szybkie
- 1. Podstawowe techniki statyczne
- Część 2. Zaawansowana analiza statyczna
- 4. Kurs błyskawiczny asemblera x86
- Poziomy abstrakcji
- Inżynieria odwrotna
- Architektura x86
- Pamięć główna
- Instrukcje
- Kody operacji i kolejność bajtów
- Operandy
- Rejestry
- Proste instrukcje
- Stos
- Instrukcje warunkowe
- Rozgałęzienia
- Instrukcje rep
- Metoda main w C i offsety
- Więcej informacji podręczniki architektury Intel x86
- Podsumowanie
- 5. IDA Pro
- Ładowanie pliku wykonywalnego
- Interfejs IDA Pro
- Tryby okna deasemblacji
- Okna przydatne do analizy
- Powrót do widoku domyślnego
- Nawigacja w IDA Pro
- Korzystanie z odsyłaczy
- Odsyłacze w kodzie
- Odsyłacze do danych
- Analizowanie funkcji
- Korzystanie z grafów
- Dostosowywanie zdeasemblowanego kodu
- Zmienianie nazw lokalizacji
- Komentarze
- Formatowanie operandów
- Używanie nazwanych stałych
- Przedefiniowywanie kodu i danych
- Rozszerzanie IDA za pomocą wtyczek
- Korzystanie ze skryptów IDC
- Korzystanie z IDAPython
- Korzystanie z komercyjnych wtyczek
- Podsumowanie
- 6. Rozpoznawanie w asemblerze konstrukcji języka C
- Zmienne globalne a lokalne
- Deasemblacja operacji arytmetycznych
- Rozpoznawanie instrukcji if
- Graficzna analiza funkcji za pomocą IDA Pro
- Rozpoznawanie zagnieżdżonych instrukcji if
- Rozpoznawanie pętli
- Wykrywanie pętli for
- Wykrywanie pętli while
- Konwencje wywołań funkcji
- cdecl
- stdcall
- fastcall
- Odkładanie vs. kopiowanie
- Analizowanie instrukcji switch
- Styl if
- Deasemblacja tablic
- Identyfikowanie struktur
- Analizowanie odniesień na liście powiązanej
- Podsumowanie
- 7. Analizowanie malware w systemie Windows
- Windows API
- Typy i notacja węgierska
- Uchwyty
- Funkcje systemu plików
- Pliki specjalne
- Rejestr systemu Windows
- Klucze główne rejestru
- Regedit
- Programy uruchamiane automatycznie
- Typowe funkcje dotyczące rejestru
- Analiza kodu rejestru w praktyce
- Tworzenie skryptów dotyczących rejestru przy użyciu plików .reg
- Sieciowe API
- Gniazda kompatybilne z BSD
- Sieć strona klienta i serwera
- WinINet API
- Śledzenie działającego malware
- Biblioteki DLL
- Procesy
- Wątki
- Koordynacja międzyprocesowa z użyciem muteksów
- Usługi
- Component Object Model
- Wyjątki gdy coś pójdzie nie tak
- Tryb użytkownika a tryb jądra
- Native API
- Podsumowanie
- Windows API
- 4. Kurs błyskawiczny asemblera x86
- Część 3. Zaawansowana analiza dynamiczna
- 8. Debugowanie
- Debuggery kodu źródłowego i debuggery asemblera
- Debugowanie w trybie jądra i w trybie użytkownika
- Korzystanie z debuggera
- Praca krokowa
- Step-over vs. step-into
- Wstrzymywanie wykonywania za pomocą punktów przerwania
- Wyjątki
- Wyjątki pierwszej i drugiej szansy
- Typowe wyjątki
- Modyfikowanie wykonania za pomocą debuggera
- Modyfikowanie wykonywania programu w praktyce
- Podsumowanie
- 9. OllyDbg
- Ładowanie malware
- Otwieranie pliku wykonywalnego
- Dołączanie do uruchomionego procesu
- Interfejs OllyDbg
- Mapa pamięci
- Rebasing
- Wyświetlanie wątków i stosów
- Wykonywanie kodu
- Punkty przerwania
- Programowe punkty przerwania
- Warunkowe punkty przerwań
- Sprzętowe punkty przerwania
- Pamięciowe punkty przerwania
- Ładowanie plików DLL
- Śledzenie
- Standardowa historia śledzenia
- Stos wywołań
- Śledzenie wykonania
- Śledzenie w Poison Ivy
- Obsługa wyjątków
- Poprawki w kodzie
- Analizowanie shellcode
- Narzędzia pomocnicze
- Wtyczki
- OllyDump
- Hide Debugger
- Command Line
- Bookmarks
- Debugowanie z użyciem skryptów
- Podsumowanie
- Ładowanie malware
- 10. Debugowanie jądra za pomocą WinDbg
- Sterowniki i kod w jądrze
- Konfigurowanie debugowania jądra
- Korzystanie z WinDbg
- Odczytywanie pamięci
- Korzystanie z operatorów arytmetycznych
- Ustawianie punktów przerwania
- Lista modułów
- Microsoftowe symbole
- Wyszukiwanie symboli
- Wyświetlanie informacji o strukturze
- Konfigurowanie windowsowych symboli
- Debugowanie jądra w praktyce
- Spojrzenie na kod w przestrzeni użytkownika
- Spojrzenie na kod w trybie jądra
- Znajdowanie obiektów sterowników
- Rootkity
- Analiza rootkitów w praktyce
- Przerwania
- Ładowanie sterowników
- Problemy z jądrem w Windows Vista, Windows 7 i w wersjach x64
- Podsumowanie
- 8. Debugowanie
- Część 4. Funkcjonalności malware
- 11. Zachowanie malware
- Downloadery i launchery
- Backdoory
- Połączenie zwrotne
- Narzędzia administracji zdalnej
- Botnety
- Porównanie RAT i botnetów
- Złodzieje danych uwierzytelniających
- Przechwytywanie poprzez GINA
- Zrzucanie skrótów
- Rejestrowanie naciśnięć klawiszy
- Mechanizmy trwałości
- Rejestr systemu Windows
- Systemowe pliki binarne z wprowadzonym trojanem
- Przejmowanie kolejności ładowania bibliotek DLL
- Eskalacja uprawnień
- Użycie SeDebugPrivilege
- Tuszując swoje ślady rootkity w trybie użytkownika
- IAT hooking
- Inline hooking
- Podsumowanie
- 12. Ukryte uruchamianie malware
- Launchery
- Iniekcja do procesu
- Iniekcja DLL
- Bezpośrednia iniekcja
- Podmiana procesu
- Iniekcja hooków
- Hooki lokalne i zdalne
- Keyloggery korzystające z hooków
- Użycie SetWindowsHookEx
- Wybieranie za cel ataku określonego wątku
- Detours
- Iniekcja APC
- Iniekcja APC z przestrzeni użytkownika
- Iniekcja APC z przestrzeni jądra
- Podsumowanie
- 13. Szyfrowanie danych
- Cel analizy algorytmów szyfrowania
- Proste szyfrowanie
- Szyfr Cezara
- XOR
- Inne proste metody szyfrowania
- Base64
- Typowe algorytmy kryptograficzne
- Rozpoznawanie łańcuchów i importów
- Wyszukiwanie stałych kryptograficznych
- Wyszukiwanie treści o wysokiej entropii
- Niestandardowe szyfrowanie
- Identyfikowanie niestandardowego szyfrowania
- Zalety niestandardowego szyfrowania dla atakującego
- Deszyfrowanie
- Samodeszyfracja
- Ręczne tworzenie funkcji deszyfrujących
- Użycie instrumentacji do generycznego deszyfrowania
- Podsumowanie
- 14. Sygnatury sieciowe dotyczące malware
- Przeciwdziałania dotyczące sieci
- Obserwacja złośliwego oprogramowania w jego naturalnym środowisku
- Wskaźniki szkodliwej aktywności
- OPSEC = Operations security
- Bezpieczne, onlineowe badanie atakującego
- Taktyki pośrednie
- Uzyskiwanie adresu IP i informacji o domenie
- Przeciwdziałania oparte na zawartości ruchu sieciowego
- Wykrywanie włamań za pomocą Snorta
- Głębsze spojrzenie
- Łączenie technik analizy dynamicznej i statycznej
- Niebezpieczeństwo nadmiernej analizy
- Ukrywanie się przed wzrokiem
- Zrozumienie otaczającego kodu
- Znalezienie kodu odpowiedzialnego za komunikację sieciową
- Poznawanie źródeł zawartości ruchu sieciowego
- Dane wpisane na stałe a dane efemeryczne
- Identyfikacja i wykorzystanie etapów szyfrowania
- Tworzenie sygnatury
- Analizowanie reguł parsowania
- Wybieranie wielu elementów
- Zrozumienie perspektywy atakującego
- Podsumowanie
- Przeciwdziałania dotyczące sieci
- 11. Zachowanie malware
- Część 5. Zapobieganie inżynierii odwrotnej
- 15. Zapobieganie deasemblacji
- O co chodzi w zapobieganiu deasemblacji
- Pokonać algorytmy deasemblacji
- Deasemblacja liniowa
- Deasemblacja śledząca przepływ programu
- Techniki zapobiegania deasemblacji
- Instrukcje skoku z tym samym celem
- Instrukcja skoku ze stałym warunkiem
- Niemożliwa deasemblacja
- Wstawianie instrukcji NOP w IDA Pro
- Zaciemnianie kontroli przepływu wykonania
- Problem ze wskaźnikiem funkcji
- Dodawanie brakujących odsyłaczy w kodzie w IDA Pro
- Nadużywanie wskaźnika powrotu
- Niewłaściwe wykorzystanie strukturalnej obsługi wyjątków
- Zapobieganie analizie ramek stosu
- Podsumowanie
- 16. Zapobieganie debugowaniu
- Wykrywanie debuggera w systemie Windows
- Użycie Windows API
- Ręczne sprawdzanie struktur
- Sprawdzanie śladów w systemie
- Identyfikowanie zachowania debuggera
- Skanowanie INT
- Wyznaczanie sum kontrolnych kodu
- Kontrole czasu
- Zakłócanie funkcjonalności debuggera
- Użycie wywołań zwrotnych TLS
- Użycie wyjątków
- Wstawianie przerwań
- Luki w debuggerach
- Luki w nagłówku PE
- Luka w OutputDebugString
- Podsumowanie
- Wykrywanie debuggera w systemie Windows
- 17. Techniki wykrywania maszyny wirtualnej
- Artefakty VMware
- Omijanie wyszukiwania artefaktów VMware
- Sprawdzanie artefaktów pamięci
- Podatności w instrukcjach
- Użycie jako anty-WM techniki Red Pill
- Użycie techniki No Pill
- Odpytywanie portu komunikacji we/wy
- Użycie instrukcji str
- Instrukcje anty-VM architektury x86
- Podświetlanie anty-VM w IDA Pro
- Użycie ScoopyNG
- Podkręcanie ustawień
- Poza maszynę wirtualną
- Podsumowanie
- Artefakty VMware
- 18. Pakowanie i rozpakowywanie
- Anatomia pakera
- Nakładka rozpakowująca
- Ładowanie pliku wykonywalnego
- Rozwiązywanie importów
- Skok ogonowy
- Ilustracja procesu rozpakowywania
- Rozpoznawanie spakowanych programów
- Wskaźniki spakowanego programu
- Obliczanie entropii
- Warianty rozpakowywania
- Automatyczne rozpakowywanie
- Rozpakowywanie ręczne
- Przebudowa tabeli importów za pomocą narzędzia Import Reconstructor
- Znajdowanie OEP
- Ręczna naprawa tabeli importów
- Wskazówki i porady dotyczące popularnych pakerów
- UPX
- PECompact
- ASPack
- Petite
- WinUpack
- Themida
- Analizowanie bez pełnego rozpakowywania
- Spakowane biblioteki DLL
- Podsumowanie
- Anatomia pakera
- 15. Zapobieganie deasemblacji
- Część 6. Tematy specjalne
- 19. Analizowanie shellcode
- Ładowanie shellcodeu w celu analizy
- Kod niezależny od pozycji
- Określanie miejsca wykonywania
- Użycie call/pop
- Użycie fnstenv
- Manualne rozwiązywanie symboli
- Znajdowanie kernel32.dll w pamięci
- Parsowanie danych o eksportach z PE
- Użycie zahaszowanych nazw eksportów
- Kompletny przykład Hello World
- Szyfrowanie shellcodeu
- Ślizganie się po NOP-ach
- Poszukiwanie shellcodeu
- Podsumowanie
- 20. Analizowanie C++
- Programowanie obiektowe
- Wskaźnik this
- Przeciążanie i dekorowanie
- Dziedziczenie i nadpisywanie funkcji
- Funkcje wirtualne
- Użycie vtable
- Rozpoznawanie vtable
- Tworzenie i niszczenie obiektów
- Podsumowanie
- Programowanie obiektowe
- 21. 64-bitowe malware
- Dlaczego 64-bitowe malware?
- Różnice w architekturze x64
- Różnice w konwencji wywołań i użyciu stosu w x64
- Funkcje wywołujące i nie wywołujące innych funkcji
- Prolog i epilog w kodzie 64-bitowym
- 64-bitowa obsługa wyjątków
- Windows 32-bitowy w Windowsie 64-bitowym
- Wskazówki dotyczące funkcjonalności 64-bitowego malware
- Podsumowanie
- A. Ważne funkcje systemu Windows
- B. Narzędzia do analizy malware
- C. Rozwiązania ćwiczeń laboratoryjnych
- Laboratorium 1.1 rozwiązania
- Laboratorium 1.2 rozwiązania
- Laboratorium 1.3 rozwiązania
- Laboratorium 1.4 rozwiązania
- Laboratorium 3.1 rozwiązania
- Laboratorium 3.2 rozwiązania
- Laboratorium 3.3 rozwiązania
- Laboratorium 3.4 rozwiązania
- Laboratorium 5.1 rozwiązania
- Laboratorium 6.1 rozwiązania
- Laboratorium 6.2 rozwiązania
- Laboratorium 6.3 rozwiązania
- Laboratorium 6.4 rozwiązania
- Laboratorium 7.1 rozwiązania
- Laboratorium 7.2 rozwiązania
- Laboratorium 7.3 rozwiązania
- Laboratorium 9.1 rozwiązania
- Laboratorium 9.2 rozwiązania
- Laboratorium 9.3 rozwiązania
- Laboratorium 10.1 rozwiązania
- Laboratorium 10.2 rozwiązania
- Laboratorium 10.3 rozwiązania
- Laboratorium 11.1 rozwiązania
- Laboratorium 11.2 rozwiązania
- Laboratorium 11.3 rozwiązania
- Laboratorium 12.1 rozwiązania
- Laboratorium 12.2 rozwiązania
- Laboratorium 12.3 rozwiązania
- Laboratorium 12.4 rozwiązania
- Laboratorium 13.1 rozwiązania
- Laboratorium 13.2 rozwiązania
- Laboratorium 13.3 rozwiązania
- Laboratorium 14.1 rozwiązania
- Laboratorium 14.2 rozwiązania
- Laboratorium 14.3 rozwiązania
- Laboratorium 15.1 rozwiązania
- Laboratorium 15.2 rozwiązania
- Laboratorium 15.3 rozwiązania
- Laboratorium 16.1 rozwiązania
- Laboratorium 16.2 rozwiązania
- Laboratorium 16.3 rozwiązania
- Laboratorium 17.1 rozwiązania
- Laboratorium 17.2 rozwiązania
- Laboratorium 17.3 rozwiązania
- Laboratorium 18.1 rozwiązania
- Laboratorium 18.2 rozwiązania
- Laboratorium 18.3 rozwiązania
- Laboratorium 18.4 rozwiązania
- Laboratorium 18.5 rozwiązania
- Laboratorium 19.1 rozwiązania
- Laboratorium 19.2 rozwiązania
- Laboratorium 19.3 rozwiązania
- Laboratorium 20.1 rozwiązania
- Laboratorium 20.2 rozwiązania
- Laboratorium 20.3 rozwiązania
- Laboratorium 21.1 rozwiązania
- Laboratorium 21.2 rozwiązania
- 19. Analizowanie shellcode
- Przypisy