Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń - Helion

Tytuł oryginału: Gray Hat C#: Creating and Automating Security Tools
Tłumaczenie: Radosław Meryk
ISBN: 978-83-283-4063-3
stron: 336, Format: 170x230, okładka: miękka
Data wydania: 2018-01-01
Księgarnia: Helion
Cena książki: 17,90 zł (poprzednio: 57,74 zł)
Oszczędzasz: 69% (-39,84 zł)
C# to nowoczesny język programowania, który został od podstaw zaprojektowany jako obiektowy. Ta dojrzała technologia jest często wybierana przez twórców oprogramowania, również tego służącego do pokonywania zabezpieczeń systemów. Dzięki temu, że platforma .NET jest oprogramowaniem open source, w C# można pisać kod, który bez problemu będzie działał w każdym systemie operacyjnym. Co prawda język ten jest prosty i łatwy do nauczenia się, jednak dopiero gruntowna znajomość C# umożliwia efektywne tworzenie narzędzi związanych z bezpieczeństwem, służących choćby do wyszukiwania luk w infrastrukturze czy prowadzenia testów penetracyjnych.
Ta książka jest przeznaczona dla specjalistów ds. bezpieczeństwa, którzy chcą korzystać z języka C# do takich zadań jak fuzzowanie, skanowanie w poszukiwaniu luk zabezpieczeń i analiza złośliwego oprogramowania. Opisano tu zarówno podstawy języka C#, jak i jego dość zaawansowane funkcje. Przedstawiono szereg bibliotek dostępnych dla tego języka. Pokazano, jak pisać kod wyszukujący luki w zabezpieczeniach i jak tworzyć eksploity. Przedstawiono sposoby korzystania z takich narzędzi jak Nessus, sqlmap i Cuckoo Sandbox. Dzięki technikom zaprezentowanym w książce administrator bezpieczeństwa bez problemu zautomatyzuje nawet najbardziej żmudne codzienne zadania!
W tej książce między innymi:
- Podstawowe i zaawansowane funkcjonalności języka C#
- Generowanie kodu ładunków, również wieloplatformowych
- Skanery, w tym OpenVAS, Nessus i Nexpose
- Automatyczna identyfikacja luk umożliwiających wstrzyknięcie kodu SQL
- Tworzenie w C# narzędzi do inżynierii wstecznej
C#. Sprawdź swój system zabezpieczeń!
Brandon Perry jest programistą i gorącym zwolennikiem idei open source. Odkąd pojawiło się środowisko Mono, pisze aplikacje w języku C#. Tworzy też moduły dla frameworka Metasploit, analizuje pliki binarne i zarządza ciekawymi projektami (https://volatileminds.net/). Fascynuje się badaniami nad bezpieczeństwem systemów informatycznych. Chętnie dzieli się swoją wiedzą, pisze książki i pomaga innym w tworzeniu solidniejszego oprogramowania.
Osoby które kupowały "Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń", wybierały także:
- ASP .NET Core. Kurs video. Rozwijanie dodatkowych funkcjonalności Web API 89,00 zł, (40,05 zł -55%)
- Programowanie asynchroniczne i równoległe w C#. Kurs video. Poziom podstawowy 69,00 zł, (31,05 zł -55%)
- Technologia LINQ. Kurs video. Warsztat pracy z danymi z różnych źródeł 59,00 zł, (26,55 zł -55%)
- Język XAML. Kurs video. Poziom pierwszy. Programowanie aplikacji w WPF 59,00 zł, (26,55 zł -55%)
- ASP.NET MVC. Kurs video. Poziom pierwszy. Programowanie aplikacji internetowych 79,00 zł, (35,55 zł -55%)
Spis treści
Gray Hat C#. Jêzyk C# w kontroli i ³amaniu zabezpieczeñ -- spis tre¶ci
S³owo wstêpne (11)
Przedmowa (15)
- Dlaczego nale¿y ufaæ Mono? (16)
- Dla kogo jest ta ksi±¿ka? (16)
- Organizacja tej ksi±¿ki (17)
- Podziêkowania (19)
- Ostatnia uwaga (19)
1. B³yskawiczny kurs jêzyka C# (21)
- Wybór ¶rodowiska IDE (22)
- Prosty przyk³ad (22)
- Wprowadzenie do klas i interfejsów (24)
- Tworzenie klasy (24)
- Tworzenie interfejsu (25)
- Tworzenie podklas klasy abstrakcyjnej i implementacja interfejsu (26)
- Powi±zanie wszystkiego z metod± Main() (28)
- Uruchamianie metody Main() (30)
- Metody anonimowe (30)
- Przypisywanie delegata do metody (30)
- Aktualizacja klasy Firefighter (31)
- Tworzenie argumentów opcjonalnych (31)
- Aktualizacja metody Main() (32)
- Uruchomienie zaktualizowanej metody Main() (33)
- Integracja z bibliotekami natywnymi (34)
- Podsumowanie (35)
2. Fuzzing. Wykorzystanie XSS oraz iniekcji SQL (37)
- Konfigurowanie maszyny wirtualnej (38)
- Dodawanie sieci wirtualnej "tylko do hosta" (38)
- Tworzenie maszyny wirtualnej (39)
- Uruchamianie maszyny wirtualnej z obrazu ISO z systemem BadStore (39)
- Iniekcje SQL (41)
- Skrypty krzy¿owe (43)
- Fuzzing ¿±dañ GET z wykorzystaniem fuzzera mutacyjnego (45)
- Preparowanie parametrów i testowanie luk (46)
- Budowanie ¿±dañ HTTP (47)
- Testowanie fuzzowanego kodu (48)
- Fuzzowanie ¿±dañ POST (49)
- Pisanie fuzzera ¿±dania POST (50)
- Rozpoczyna siê fuzzing (52)
- Fuzzowanie parametrów (54)
- Fuzzowanie danych w formacie JSON (56)
- Konfigurowanie wra¿liwego urz±dzenia (56)
- Przechwytywanie wra¿liwych ¿±dañ JSON (56)
- Tworzenie fuzzera JSON (57)
- Testowanie fuzzera JSON (62)
- Wykorzystywanie iniekcji SQL (63)
- Wykorzystywanie eksploita bazuj±cego na instrukcji UNION rêcznie (64)
- Wykorzystywanie eksploita bazuj±cego na instrukcji UNION programowo (66)
- Wykorzystywanie luk SQL typu Boolean-blind (70)
- Podsumowanie (79)
3. Fuzzowanie punktów koñcowych SOAP (81)
- Konfiguracja wra¿liwych punktów koñcowych (82)
- Parsowanie pliku WSDL (83)
- Tworzenie klasy dla dokumentu WSDL (84)
- Podstawowe metody parsowania (85)
- Klasy dla typu SOAP i parametrów (87)
- Tworzenie klasy SoapMessage definiuj±cej przesy³ane dane (90)
- Implementacja klasy reprezentuj±cej czê¶ci komunikatu (90)
- Definiowanie operacji portu za pomoc± klasy SoapPortType (91)
- Implementacja klasy zawieraj±cej operacje na porcie (93)
- Definiowanie protoko³ów u¿ywanych w powi±zaniach SOAP (93)
- Kompilacja listy operacji wêz³ów potomnych (95)
- Znajdowanie us³ug SOAP w portach (96)
- Automatyczne fuzzowanie punktów koñcowych SOAP pod k±tem wra¿liwo¶ci na iniekcje SQL (98)
- Fuzzowanie pojedynczych us³ug SOAP (99)
- Fuzzowanie portów SOAP HTTP POST (103)
- Fuzzowanie portu XML us³ugi SOAP (106)
- Uruchomienie fuzzera (110)
- Podsumowanie (111)
4. Pisanie ³adunków typu connect-back, bind i metasploit (113)
- Tworzenie ³adunku Connect-Back (114)
- Strumieñ sieci (114)
- Uruchomienie polecenia (116)
- Uruchomienie ³adunku (117)
- Wi±zanie ³adunku (118)
- Odbieranie danych, uruchamianie poleceñ i zwracanie wyników (119)
- Uruchamianie poleceñ ze strumienia (120)
- Wykorzystanie protoko³u UDP do ataku na sieæ (121)
- Kod dla komputera docelowego (122)
- Kod napastnika (125)
- Uruchamianie ³adunków typu Metasploit x86 i x86-64 za pomoc± jêzyka C# (128)
- Konfigurowanie frameworka Metasploit (128)
- Generowanie ³adunków (130)
- Wykonywanie natywnych ³adunków systemu Windows jako kodu niezarz±dzanego (131)
- Uruchamianie natywnych ³adunków w systemie Linux (133)
- Podsumowanie (137)
5. Automatyzacja skanera Nessus (139)
- REST i API systemu Nessus (140)
- Klasa NessusSession (141)
- Wykonywanie ¿±dañ HTTP (142)
- Wylogowanie i sprz±tanie (144)
- Testowanie klasy NessusSession (145)
- Klasa NessusManager (146)
- Wykonywanie skanowania Nessus (148)
- Podsumowanie (150)
6. Automatyzacja Nexpose (153)
- Instalacja Nexpose (154)
- Aktywacja i testowanie (155)
- ¯argon Nexpose (156)
- Klasa NexposeSession (157)
- Metoda ExecuteCommand() (158)
- Wylogowanie i zniszczenie sesji (161)
- Znajdowanie wersji interfejsu API (162)
- Korzystanie z Nexpose API (163)
- Klasa NexposeManager (163)
- Automatyzacja skanowania s³abych punktów (165)
- Tworzenie lokalizacji z aktywami (165)
- Rozpoczynanie skanowania (166)
- Tworzenie raportu na temat lokalizacji w formacie PDF i usuwanie lokalizacji (167)
- Kompletowanie rozwi±zania (168)
- Rozpoczêcie skanowania (169)
- Generowanie raportu i usuwanie lokalizacji (170)
- Uruchamianie automatyzacji (170)
- Podsumowanie (171)
7. Automatyzacja OpenVas (173)
- Instalacja systemu OpenVAS (173)
- Budowanie klas (174)
- Klasa OpenVaSSession (175)
- Uwierzytelnianie na serwerze OpenVAS (176)
- Tworzenie metody do uruchamiania poleceñ OpenVAS (177)
- Odczytywanie komunikatu z serwera (177)
- Konfiguracja strumienia TCP do wysy³ania i odbierania poleceñ (178)
- Walidacja certyfikatów i od¶miecanie (179)
- Odczytywanie wersji OpenVAS (180)
- Klasa OpenVASManager (181)
- Pobieranie konfiguracji skanowania i tworzenie celów (182)
- Opakowanie automatyzacji (186)
- Uruchamianie automatyzacji (187)
- Podsumowanie (187)
8. Automatyzowanie programu Cuckoo Sandbox (189)
- Konfigurowanie Cuckoo Sandbox (190)
- Rêczne uruchamianie API systemu Cuckoo Sandbox (190)
- Uruchamianie API (191)
- Sprawdzanie stanu ¶rodowiska Cuckoo (192)
- Tworzenie klasy CuckooSession (193)
- Metody ExecuteCommand() do obs³ugi ¿±dañ HTTP (194)
- Tworzenie wieloczê¶ciowych danych HTTP za pomoc± metody GetMultipartFormData() (196)
- Przetwarzanie danych z pliku za pomoc± klasy FileParameter (198)
- Testowanie klasy CuckooSession i klas pomocniczych (199)
- Klasa CuckooManager (201)
- Metoda CreateTask() (201)
- Szczegó³y zadania i metody tworzenia raportów (203)
- Tworzenie abstrakcyjnej klasy Task (204)
- Sortowanie i tworzenie ró¿nych typów klas (205)
- Po³±czenie elementów ze sob± (207)
- Testowanie aplikacji (209)
- Podsumowanie (211)
9. Automatyzacja sqlmap (213)
- Uruchamianie sqlmap (214)
- Interfejs API REST programu sqlmap (215)
- Testowanie API programu sqlmap za pomoc± curl (216)
- Tworzenie sesji dla programu sqlmap (220)
- Tworzenie metody do wykonywania ¿±dañ GET (221)
- Wykonywanie ¿±dania POST (222)
- Testowanie klasy obs³ugi sesji (223)
- Klasa SqlmapManager (225)
- Lista opcji sqlmap (227)
- Tworzenie metod realizuj±cych skanowanie (229)
- Nowa metoda Main() (230)
- Raport ze skanowania (231)
- Automatyzowanie pe³nego skanu sqlmap (232)
- Integracja sqlmap z fuzzerem SOAP (234)
- Dodanie obs³ugi ¿±dañ GET do fuzzera SOAP (235)
- Dodanie obs³ugi ¿±dañ POST do programu sqlmap (236)
- Wywo³ywanie nowych metod (238)
- Podsumowanie (240)
10. Automatyzacja ClamAV (241)
- Instalacja programu ClamAV (242)
- Natywna biblioteka ClamaAV kontra demon sieciowy clamd (243)
- Automatyzacja z wykorzystaniem natywnych bibliotek ClamAV (244)
- Pomocnicze enumeracje i klasy (244)
- Dostêp do funkcji natywnej biblioteki ClamAV (247)
- Kompilacja silnika programu ClamAV (248)
- Skanowanie plików (250)
- Sprz±tanie (252)
- Testowanie programu przez skanowanie pliku EICAR (252)
- Automatyzacja z wykorzystaniem demona clamd (254)
- Instalacja demona clamd (254)
- Uruchamianie demona clamd (255)
- Tworzenie klasy obs³ugi sesji dla demona clamd (255)
- Tworzenie klasy mened¿era demona clamd (257)
- Testowanie z wykorzystaniem demona clamd (258)
- Podsumowanie (259)
11. Automatyzacja Metasploit (261)
- Uruchamianie serwera RPC (262)
- Instalacja Metasploitable (263)
- Pobranie biblioteki MSGPACK (264)
- Instalowanie mened¿era pakietów NuGet w ¶rodowisku MonoDevelop (264)
- Instalacja biblioteki MSGPACK (265)
- Dodanie referencji do biblioteki MSGPACK (266)
- Klasa MetasploitSession (267)
- Tworzenie metody Execute() dla ¿±dañ HTTP i interakcje z bibliotek± MSGPACK (268)
- Przekszta³canie danych odpowiedzi z formatu MSGPACK (270)
- Testowanie klasy sesji (272)
- Klasa MetasploitManager (273)
- Scalamy komponenty w ca³o¶æ (275)
- Uruchamianie eksploita (276)
- Interakcje z pow³ok± (277)
- Pobieranie pow³ok (278)
- Podsumowanie (279)
12. Automatyzacja Arachni (281)
- Instalacja Arachni (281)
- Interfejs API REST systemu Arachni (282)
- Tworzenie klasy ArachniHTTPSession (284)
- Tworzenie klasy ArachniHTTPManager (285)
- Po³±czenie klas sesji i mened¿era (286)
- RPC systemu Arachni (287)
- Rêczne uruchamianie mechanizmu RPC (288)
- Klasa ArachniRPCSession (290)
- Metody pomocnicze operacji ExecuteCommand() (292)
- Metoda ExecuteCommand() (293)
- Klasa ArachniRPCManager (296)
- Scalamy komponenty w ca³o¶æ (297)
- Podsumowanie (300)
13. Dekompilacja i in¿ynieria wsteczna zarz±dzanych zestawów (301)
- Dekompilacja zestawów zarz±dzanych (302)
- Testowanie dekompilatora (305)
- Wykorzystanie narzêdzia monodis do analizowania zestawu (306)
- Podsumowanie (309)
14. Czytanie ga³êzi rejestru w trybie offline (311)
- Struktura ga³êzi rejestru (312)
- Pobieranie ga³êzi rejestru (313)
- Czytanie ga³êzi rejestru (314)
- Klasa do parsowania pliku ga³êzi rejestru (315)
- Tworzenie klasy reprezentuj±cej klucze wêz³ów (316)
- Implementacja klasy do przechowywania kluczy warto¶ci (321)
- Testowanie biblioteki (322)
- Zrzucanie klucza Boot (323)
- Metoda GetBootKey() (323)
- Metoda GetValueKey() (325)
- Metoda GetNodeKey() (325)
- Metoda StringToByteArray() (326)
- Uzyskanie klucza rozruchowego (327)
- Weryfikacja klucza rozruchowego (327)
- Podsumowanie (328)
Skorowidz (331)