reklama - zainteresowany?

The Shellcoders Handbook. Edycja polska - Helion

The Shellcoders Handbook. Edycja polska
Autor: J. Koziol, D. Litchfield, D. Aitel, Ch. Anley, S. Eren, N. Mehta, R. Hassell
Tytuł oryginału: The Shellcoders Handbook
Tłumaczenie: Jaromir Senczyk
ISBN: 83-7361-597-0
stron: 560, Format: B5, okładka: miękka
Data wydania: 2004-09-21
Księgarnia: Helion

Cena książki: 59,90 zł

Dodaj do koszyka The Shellcoders Handbook. Edycja polska

Tagi: Bezpieczeństwo systemów

Usuń luki w zabezpieczeniach programów i systemów operacyjnych

  • Poznaj przyczyny powstawania luk
  • Naucz się sposobów włamań do systemów
  • Podejmij odpowiednie środki zapobiegawcze

Niemal co tydzień dowiadujemy się o nowych "łatach" usuwających luki w zabezpieczeniach systemów operacyjnych i programów. Niestety -- często, zanim łata zostanie rozpowszechniona i zainstalowana na komputerach, ktoś wykorzysta "dziurę" w systemie i włamie się do niego. Cóż więc zrobić, aby zabezpieczyć swoje dane przez atakiem hakera? Jak znaleźć słabe punkty zabezpieczeń i usunąć je? W jaki sposób zaimplementować odpowiednie zabezpieczenia w tworzonym przez siebie oprogramowaniu?

Książka "The Shellcoder's handbook. Edycja polska" zawiera odpowiedzi na wszystkie te pytania. Książka będąca efektem pracy zespołu złożonego ze specjalistów w zakresie bezpieczeństwa systemów komputerowych, analityków i hakerów przedstawia sposoby wykrywania słabych punktów oprogramowania tworzonego w języku C i sprawdzenia możliwości ich wykorzystania. Opisuje luki w istniejących systemach i programach oraz sposoby ich zabezpieczenia. Zawarte w niej wiadomości pozwolą na tworzenie własnych systemów wykrywania błędów i pomogą ustalić, czy błędy te stanowią potencjalne zagrożenie.

  • Podstawowe metody włamań do różnych systemów operacyjnych
  • Techniki przepełniania stosu, wykorzystywania kodu powłoki i błędów łańcuchów formatujących
  • Kontrola słabych punktów programów metodami wstrzykiwania kodu i fuzzingu
  • Kontrola kodu źródłowego programów
  • Klasy błędów
  • Sposoby śledzenia słabych punktów
  • Analiza kodu binarnego
  • Tworzenie eksploitów
  • Ataki na systemy zarządzania bazami danych

Nie dopuść do tego, aby Twoje programy padły ofiarą ataku hakera.

Dodaj do koszyka The Shellcoders Handbook. Edycja polska

Spis treści

The Shellcoders Handbook. Edycja polska -- spis treści

O Autorach (13)

Część I Wprowadzenie do metod włamań: Linux na procesorach x86 (15)

Rozdział 1. Wprowadzenie (17)

  • Podstawowe pojęcia (17)
    • Zarządzanie pamięcią (18)
    • Asembler (20)
  • Rozpoznawanie przekładu kodu C++ w języku asemblera (21)
  • Podsumowanie (23)

Rozdział 2. Przepełnienia stosu (25)

  • Bufory (25)
  • Stos (27)
    • Wywołania funkcji i stos (28)
  • Przepełnianie buforów na stosie (31)
    • Wykorzystanie rejestru EIP (32)
  • Zdobywanie uprawnień root (34)
    • Problem adresu (36)
    • Metoda rozkazów NOP (39)
  • Stos zabraniający wykonywania rozkazów (41)
    • Metoda powrotu do biblioteki libc (41)
  • Podsumowanie (44)

Rozdział 3. Kod powłoki (45)

  • Wywołania systemowe (46)
  • Kod powłoki używający wywołania systemowego exit() (48)
  • Wstrzykiwanie kodu powłoki (51)
  • Tworzenie nowej powłoki (53)
  • Podsumowanie (61)

Rozdział 4. Błędy łańcuchów formatujących (63)

  • Warunki wstępne (63)
  • Łańcuchy formatujące (63)
  • Błędy łańcuchów formatujących (65)
  • Włamania za pomocą łańcuchów formatujących (69)
    • Atak na usługę (70)
    • Ujawnianie informacji (71)
  • Przejęcie sterowania (76)
  • Jak to możliwe? (85)
  • Przegląd technik łańcucha formatującego (85)
  • Podsumowanie (88)

Rozdział 5. Wprowadzenie do metod przepełnienia sterty (89)

  • Sterta (89)
    • Zarządzanie stertą (91)
  • Wyszukiwanie przepełnień sterty (91)
    • Podstawowe metody przepełniania sterty (92)
    • Średnio zaawansowane metody przepełniania stosu (98)
    • Zaawansowane przepełnienia sterty (104)
  • Podsumowanie (105)

Część II Włamania na platformach Windows, Solaris i Tru64 (107)

Rozdział 6. Wprowadzenie do systemu Windows (109)

  • Różnice między systemami Linux i Windows (109)
    • Win32 i PE-COFF (110)
  • Sterty (112)
    • Wątki (113)
  • Zalety i wady DCOM i DCE-RPC (114)
    • Rozpoznanie (116)
    • Włamania (117)
    • Tokeny i podszywanie (118)
    • Obsługa wyjątków w Win32 (120)
  • Śledzenie działania programów w systemie Windows (121)
    • Błędy w Win32 (122)
    • Tworzenie kodu powłoki w systemie Windows (122)
    • Przewodnik hakera po funkcjach Win32 (123)
    • Rodzina systemów Windows z punktu widzenia hakera (123)
  • Podsumowanie (124)

Rozdział 7. Kody powłoki w Windows (125)

  • Składnia i filtry (125)
  • Przygotowywanie kodu powłoki (126)
  • Parsowanie bloków PEB (127)
    • Analiza kodu heapoverflow.c (128)
  • Przeszukiwanie z użyciem obsługi wyjątków (143)
  • Tworzenie nowej powłoki (146)
    • Dlaczego nie warto tworzyć nowej powłoki w Windows (147)
  • Podsumowanie (148)

Rozdział 8. Przepełnienia w systemie Windows (149)

  • Przepełnienia buforów na stosie (149)
    • Procedury obsługi wyjątków dla ramek wywołań funkcji (150)
    • Wykorzystanie procedur obsługi wyjątków na platformie Windows 2003 Server (154)
    • Końcowe uwagi na temat nadpisań procedur obsługi wyjątków (158)
  • Ochrona stosu i Windows 2003 Server (159)
  • Przepełnienia sterty (164)
    • Sterta procesu (164)
    • Sterty dynamiczne (165)
    • Korzystanie ze sterty (165)
    • Jak działa sterta (165)
  • Wykorzystanie przepełnień sterty (168)
    • Nadpisanie wskaźnika funkcji RtlEnterCriticalSection w bloku PEB (169)
    • Nadpisanie wskaźnika pierwszej wektoryzowanej procedury obsługi wyjątków pod adresem 77FC3210 (171)
    • Nadpisanie wskaźnika filtra nieobsłużonych wyjątków (174)
    • Nadpisanie wskaźnika procedury obsługi wyjątków w bloku TEB (179)
    • Naprawa sterty (180)
    • Inne aspekty przepełnień sterty (182)
    • Podsumowanie przepełnień sterty (183)
  • Inne przepełnienia (183)
    • Przepełnienia sekcji .data (183)
    • Przepełnienia bloków TEB i PEB (185)
  • Przepełnienie buforów i stosy zabraniające wykonania kodu (185)
  • Podsumowanie (190)

Rozdział 9. Filtry (191)

  • Tworzenie eksploitów i filtry alfanumeryczne (191)
  • Tworzenie eksploitów i filtry Unicode (195)
    • Unicode (195)
    • Konwersja z ASCII na Unicode (196)
  • Wykorzystanie słabych punktów związanych z kodem Unicode (196)
    • Zbiór rozkazów dostępnych dla eksploitów Unicode (197)
  • Metoda wenecka (198)
    • Implementacja metody weneckiej dla kodu ASCII (199)
  • Dekoder i dekodowanie (202)
    • Kod dekodera (203)
    • Ustalenie adresu bufora (204)
  • Podsumowanie (205)

Rozdział 10. Wprowadzenie do włamań w systemie Solaris (207)

  • Wprowadzenie do architektury SPARC (208)
    • Rejestry i okna rejestrów (208)
    • Szczelina zwłoki (210)
    • Rozkazy złożone (211)
  • Kody powłoki na platformie Solaris/SPARC (211)
    • Kod powłoki i określanie własnego położenia (212)
    • Prosty kod powłoki dla platformy SPARC (212)
    • Przydatne wywołania systemu Solaris (213)
    • Rozkaz NOP i rozkazy wypełniające (214)
  • Ramki na stosie platformy Solaris/SPARC (214)
  • Techniki przepełnień stosu (215)
    • Przepełnienia o dowolnym rozmiarze (215)
    • Okna rejestrów komplikują przepełnienia stosu (216)
    • Inne czynniki utrudniające przepełnienia stosu (216)
    • Możliwe rozwiązania (217)
    • Przepełnienia jednym bajtem (217)
    • Położenie kodu powłoki (218)
  • Przykłady przepełnień stosu (219)
    • Atakowany program (219)
    • Eksploit (221)
  • Przepełnienia sterty na platformie Solaris/SPARC (224)
    • Wprowadzenie do sterty systemu Solaris (224)
    • Struktura drzewa sterty (225)
  • Metoda podstawowa (t_delete) (243)
    • Ograniczenia standardowych przepełnień sterty (246)
    • Cele nadpisań (247)
  • Inne słabe punkty sterty (249)
    • Przepełnienia jednym bajtem (250)
    • Podwójne zwolnienie (250)
    • Inne błędy funkcji free() (250)
  • Przykład przepełnienia sterty (251)
    • Atakowany program (251)
  • Inne techniki włamań w systemie Solaris (255)
    • Przepełnienia danych statycznych (255)
    • Obejście zabezpieczenia stosu (255)
  • Podsumowanie (256)

Rozdział 11. Zaawansowane metody włamań w systemie Solaris (257)

  • Śledzenie modułu dynamicznej konsolidacji krok po kroku (258)
  • Sztuczki przepełnień sterty Solaris/SPARC (271)
  • Zaawansowany kod powłoki na platformie Solaris/SPARC (273)
  • Podsumowanie (284)

Rozdział 12. Włamania w systemie HP Tru64 Unix (285)

  • Architektura procesorów Alpha (286)
    • Rejestry procesorów Alpha (286)
    • Zbiór rozkazów (287)
    • Konwencje wywołań (287)
  • Pobieranie licznika rozkazów (GetPC) (289)
  • Wywołania systemowe (291)
  • Dekoder XOR dla kodu powłoki (291)
  • Kod powłoki setuid + execve (293)
    • Wywołania systemowe setuid(0) i execve("/bin/sh", ...) (293)
    • Kompilacja kodu w asemblerze i wyodrębnienie kodu powłoki (294)
    • Kodowanie uzyskanych kodów powłoki funkcją XOR (295)
    • Dołączenie zakodowanego kodu do dekodera XOR (296)
    • Kompilacja i wyodrębnienie ostatecznej postaci kodu powłoki (297)
  • Kod powłoki zestawiający połączenie zwrotne (299)
  • Kod powłoki wyszukujący gniazdo sieciowe (300)
  • Kod powłoki dowiązujący gniazdo sieciowe (301)
  • Przepełnienia stosu (303)
    • Obejście ochrony stosu (303)
  • Włamanie do usługi rpc.ttdbserver (304)
  • Podsumowanie (311)

Część III Wykrywanie słabych punktów (313)

Rozdział 13. Tworzenie środowiska pracy (315)

  • Źródła informacji (316)
  • Narzędzia do tworzenia kodu (316)
    • gcc (316)
    • gdb (317)
    • NASM (317)
    • WinDbg (317)
    • OllyDbg (317)
    • SoftICE (318)
    • Visual C++ (318)
    • Python (318)
  • Narzędzia śledzenia kodu (318)
    • Własne skrypty (318)
    • Wszystkie platformy (320)
    • Unix (320)
    • Windows (321)
  • Artykuły, które powinieneś przeczytać (322)
    • Archiwa artykułów (324)
  • Optymalizacja procesu tworzenia kodu powłoki (325)
    • Plan eksploitu (325)
    • Tworzenie kodu powłoki za pomocą asemblera wbudowanego w kompilator (325)
    • Biblioteka kodów powłoki (327)
    • Kontynuacja działania atakowanego procesu (327)
    • Zwiększanie stabilności eksploitu (328)
    • Wykorzystanie istniejącego połączenia (329)
  • Podsumowanie (330)

Rozdział 14. Wstrzykiwanie błędów (331)

  • Ogólny projekt systemu (332)
    • Generowanie danych wejściowych (332)
    • Wstrzykiwanie błędów (335)
    • Moduł modyfikacji (335)
    • Dostarczanie błędów do aplikacji (339)
    • Algorytm Nagla (340)
    • Zależności czasowe (340)
    • Heurystyki (340)
    • Protokoły ze stanem i bez (341)
  • Monitorowanie błędów (341)
    • Wykorzystanie programu uruchomieniowego (341)
    • FaultMon (342)
  • Kompletna aplikacja testująca (342)
  • Podsumowanie (343)

Rozdział 15. Fuzzing (345)

  • Ogólna teoria fuzzingu (345)
    • Analiza statyczna kontra fuzzing (349)
    • Fuzzing jest skalowalny (349)
  • Wady fuzzerów (351)
  • Modelowanie dowolnych protokołów sieciowych (352)
  • Inne technologie fuzzerów (352)
    • Migotanie bitów (353)
    • Modyfikacja programów open source (353)
    • Fuzzing i analiza dynamiczna (353)
  • SPIKE (354)
    • Jak działa SPIKE? (354)
    • Zalety stosowania struktur programu SPIKE do modelowania protokołów sieciowych (355)
  • Inne fuzzery (362)
  • Podsumowanie (362)

Rozdział 16. Kontrola kodu źródłowego (363)

  • Narzędzia (364)
    • Cscope (364)
    • Ctags (365)
    • Edytory (365)
    • Cbrowser (365)
  • Zautomatyzowane narzędzia kontroli kodu źródłowego (366)
  • Metodologia (367)
    • Metoda zstępująca (367)
    • Metoda wstępująca (367)
    • Metoda selektywna (367)
  • Klasy błędów (368)
    • Ogólne błędy logiki (368)
    • (Prawie) wymarłe klasy błędów (368)
    • Błędy łańcuchów formatujących (369)
    • Ogólne błędy określenia zakresu (370)
    • Pętle (371)
    • Przepełnienia jednym bajtem (372)
    • Błędy braku zakończenia łańcucha (373)
    • Błędy przeskoczenia bajtu zerowego (374)
    • Błędy porównania wartości ze znakiem (375)
    • Błędy związane z wartościami całkowitymi (376)
    • Konwersje wartości całkowitych o różnej reprezentacji (378)
    • Błędy podwójnego zwolnienia (379)
    • Użycie obszarów pamięci poza okresem ich ważności (380)
    • Użycie niezainicjowanych zmiennych (380)
    • Błędy użycia po zwolnieniu (381)
    • Wielowątkowość i kod wielobieżny (382)
  • Słabe punkty i zwykłe błędy (382)
  • Podsumowanie (383)

Rozdział 17. Ręczne wykrywanie błędów (385)

  • Filozofia (385)
  • Przepełnienie extproc systemu Oracle (386)
  • Typowe błędy architektury (390)
    • Problemy pojawiają się na granicach (390)
    • Problemy pojawiają się podczas przekładu danych (391)
    • Problemy występują w obszarach asymetrii (393)
    • Problemy uwierzytelniania i autoryzacji (393)
    • Problemy występują w najbardziej oczywistych miejscach (394)
  • Obejście kontroli danych wejściowych i wykrywanie ataku (394)
    • Filtrowanie niedozwolonych danych (395)
    • Zastosowanie alternatywnego kodowania (395)
    • Dostęp do plików (396)
    • Unikanie sygnatur ataków (398)
    • Pokonywanie ograniczeń długości (398)
  • Atak typu DOS na implementację SNMP w Windows 2000 (400)
  • Wykrywanie ataków typu DOS (401)
  • SQL-UDP (402)
  • Podsumowanie (403)

Rozdział 18. Śledzenie słabych punktów (405)

  • Wprowadzenie (406)
    • Przykładowy program zawierający słaby punkt (406)
    • Projekt komponentów (409)
    • Budujemy VulnTrace (416)
    • Posługiwanie się biblioteką VulnTrace (421)
    • Techniki zaawansowane (424)
  • Podsumowanie (425)

Rozdział 19. Audyt kodu binarnego (427)

  • Audyt kodu binarnego i kontrola kodu źródłowego - podobieństwa i różnice (427)
  • IDA Pro (428)
    • Krótki kurs obsługi (429)
    • Symbole uruchomieniowe (430)
  • Wprowadzenie do audytu kodu binarnego (430)
    • Ramki stosu (430)
    • Konwencje wywołań (432)
    • Kod generowany przez kompilator (433)
    • Konstrukcje typu memcpy (436)
    • Konstrukcje typu strlen (437)
    • Konstrukcje języka C++ (438)
    • Wskaźnik this (438)
  • Odtwarzanie definicji klas (438)
    • Tablice funkcji wirtualnych (439)
    • Proste, ale przydatne wskazówki (440)
  • Ręczna analiza kodu binarnego (440)
    • Szybka weryfikacja wywołań bibliotecznych (440)
    • Podejrzane pętle i rozkazy zapisu (440)
    • Błędy logiki (441)
    • Graficzna analiza kodu binarnego (442)
    • Ręczna dekompilacja (442)
  • Przykłady analizy kodu binarnego (443)
    • Błędy serwera Microsoft SQL (443)
    • Błąd RPC-DCOM wykryty przez grupę LSD (444)
    • Błąd IIS WebDAV (444)
  • Podsumowanie (446)

Część IV Techniki zaawansowane (447)

Rozdział 20. Alternatywne strategie eksploitów (449)

  • Modyfikacja programu (450)
  • Modyfikacja 3 bajtów kodu systemu SQL Server (450)
  • MySQL i modyfikacja 1 bitu (454)
  • Modyfikacja uwierzytelniania RSA w OpenSSH (456)
  • Inne koncepcje modyfikacji działającego kodu (457)
    • Modyfikacja generatora losowego w GPG 1.2.2 (458)
  • Serwer progletów (459)
  • Proxy wywołań systemowych (459)
  • Problemy związane z proxy wywołań systemowych (461)
  • Podsumowanie (470)

Rozdział 21. Eksploity działające w rzeczywistym środowisku (471)

  • Czynniki wpływające na niezawodność (471)
    • Magiczne adresy (471)
    • Problem wersji (472)
    • Problemy kodu powłoki (473)
  • Środki zaradcze (475)
    • Przygotowanie (476)
    • Metoda pełnego przeglądu (476)
    • Lokalny eksploit (477)
    • Sygnatury systemów i aplikacji (477)
    • Wycieki informacji (479)
  • Podsumowanie (479)

Rozdział 22. Ataki na systemy baz danych (481)

  • Ataki w warstwie sieciowej (482)
  • Ataki w warstwie aplikacji (491)
  • Wykonywanie poleceń systemu operacyjnego (491)
    • Microsoft SQL Server (492)
    • Oracle (492)
    • IBM DB2 (493)
  • Wykorzystanie przepełnień na poziomie języka SQL (495)
    • Funkcje języka SQL (496)
  • Podsumowanie (497)

Rozdział 23. Przepełnienia jądra (499)

  • Typy słabych punktów jądra (499)
  • Słabe punkty jądra (507)
    • Przepełnienie stosu przez wywołanie exec_ibcs2_coff_prep_zmagic() w systemie OpenBSD (507)
    • Słaby punkt (508)
  • Funkcja vfs_getvfssw() i możliwość przeglądania modułów jądra w systemie Solaris (512)
    • Wywołanie systemowe sysfs() (514)
    • Wywołanie systemowe mount() (514)
  • Podsumowanie (515)

Rozdział 24. Wykorzystanie słabych punktów jądra (517)

  • Słaby punkt funkcji exec_ibcs2_coff_prep_zmagic() (517)
    • Wyznaczenie przesunięć i adresów pułapek (522)
    • Nadpisanie adresu powrotu i przejęcie sterowania (523)
    • Wyszukiwanie deskryptora procesu (lub struktury proc) (524)
    • Kod eksploitu wykonywany w trybie jądra (526)
    • Powrót kodu wykonywanego na poziomie jądra (528)
    • Uzyskanie uprawnień root (uid=0) (533)
  • Eksploit słabego punktu funkcji vfs_getvfssw() systemu Solaris (538)
    • Eksploit (539)
    • Moduł jądra (540)
    • Uzyskanie uprawnień root (uid=0) (543)
  • Podsumowanie (544)

Dodatki (545)

Skorowidz (547)

Dodaj do koszyka The Shellcoders Handbook. Edycja polska

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.