SZCZEGÓŁOWY SPIS TREŚCI
O AUTORACH
O recenzencie technicznym
O współpracujących autorach
Indywidualne podziękowania
WPROWADZENIE
Czym jest analiza malware?
Wymagania wstępne
Nauka w praktyce
znajduje się w książce?
Nagłówki i sekcje plików
za pomocą Resource Hackera
Korzystanie z IDAPython
Korzystanie z komercyjnych wtyczek
Podsumowanie
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
pętli for
Podsumowanie
Debuggery kodu źródłowego i debuggery asemblera
Korzystanie
Wyjątki
Analizowanie shellcode
Narzędzia pomocnicze
Wtyczki
OllyDump
Hide Debugger
Command Line
Bookmarks
Debugowanie z użyciem skryptów
Podsumowanie
10
DEBUGOWANIE JĄDRA ZA POMOCĄ WINDBG
Sterowniki i kod w jądrze
symboli
informacji o strukturze
windowsowych symboli
na kod w przestrzeni użytkownika
na kod w trybie jądra
Znajdowanie obiektów sterowników
rootkitów w praktyce
Ładowanie sterowników
i
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
do procesu
Iniekcja DLL
Bezpośrednia iniekcja
Iniekcja hooków
Hooki lokalne i zdalne
Typowe algorytmy kryptograficzne
Przeciwdziałania dotyczące sieci
Obserwacja złośliwego oprogramowania w jego naturalnym środowisku
Wskaźniki szkodliwej aktywności
OPSEC = Operations security
Bezpieczne, online’owe 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
otaczającego kodu
Znalezienie kodu odpowiedzialnego za komunikację sieciową
O co chodzi w zapobieganiu deasemblacji
Pokonać algorytmy deasemblacji
śledząca przepływ programu
Wykrywanie debuggera w systemie Windows
Ręczne sprawdzanie struktur
Sprawdzanie śladów w systemie
Identyfikowanie zachowania debuggera
Wyznaczanie sum kontrolnych kodu
Zakłócanie funkcjonalności debuggera
Użycie wywołań zwrotnych TLS
Użycie wyjątków
Wstawianie przerwań
Luki w debuggerach
w
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
Analizowanie bez pełnego rozpakowywania
Ładowanie shellcode’u w celu analizy
niezależny
miejsca wykonywania
Użycie call/pop
fnstenv
Manualne rozwiązywanie symboli
Znajdowanie kernel32 .dll w pamięci
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
Podsumowanie
DODATEK A WAŻNE FUNKCJE SYSTEMU WINDOWS
DODATEK B NARZĘDZIA DO ANALIZY
DODATEK C
Laboratorium 1 .1 – rozwiązania
Laboratorium 1 .2 – rozwiązania
1 .3 – rozwiązania
Laboratorium 1 .4 – rozwiązania
Laboratorium 3 .1 – 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 660
Laboratorium 17 2 – rozwiązania 663
Laboratorium 17 3 – rozwiązania 668
Laboratorium 18 1 – rozwiązania 675
Laboratorium 18 2 – rozwiązania 676
Laboratorium 18 3 – rozwiązania 677
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
INDEKS
686