Obsah
O autorech (13) O korektorovi obsahu (15) Poděkování (17) Úvod (19) - Přehled knih a technologií (20)
- Jak je tato kniha rozdělena (20)
- Kdo by si měl přečíst tuto knihu (22)
- Potřebné nástroje (22)
- Co je na webu (23)
- Hodně štěstí! (23)
Kapitola 1. Pohled na ekosystém (25) - Android Roots (25)
- Historie společnosti (25)
- Historie verzí (26)
- Dostupná zařízení (28)
- Otevřené (nejběžnější) zdroje (29)
- Akcionáři Androidu (31)
- Google (32)
- Výrobci zařízení (33)
- Operátoři (35)
- Vývojáři (35)
- Uživatelé (36)
- Obrázek složitosti ekosystému (38)
- Fragmentace (38)
- Kompatibilita (40)
- Problémy s upgradem (41)
- Zabezpečení versus otevřenost (43)
- Publicita informací (44)
- Shrnutí (45)
Kapitola 2. Návrh a architektura zabezpečení systému Android 47 - Android Architecture (47)
- Omezení a záruky (49)
- Izolované prostředí Android (49)
- Oprávnění pro Android (52)
- Bližší analýza vrstev
- Aplikace pro Android (55)
- Android Framework (59)
- Virtuální stroj Dalvik (60)
- Nativní kód uživatelského prostoru
- Jádro (67)
- Komplikované zabezpečení, komplikované využití 74
- Shrnutí (75)
Kapitola 3. Odemknutí zařízení (77) - Rozložení oddílů (78)
- Proces spouštění systému (80)
- Přístup do režimu stahování (81)
- Zamčené a odemčené bootloadery (82)
- Originální a upravené záchranné snímky (83)
- Získání plného přístupu s odemčeným bootloaderem (85)
- Získání plného přístupu pomocí uzamčeného zavaděče (87)
- Přístup k běžícímu systému (88)
- Zámky NAND, dočasný kořen, trvalý kořen (89)
- Trvalý kořen softwaru 91
- Příběhy známých útoků (92)
- Jádro: Wunderbar / asroot (92)
- Záchranný režim: Volez (93)
- Udev: Exploid (93)
- Adbd: RageAgainstTheCage (94)
- Zygote: Zimperlich and Zysploit (94)
- Ashmem: KillingInTheNameOf a psneuter (95)
- Vold: GingerBreak (95)
- PowerVR: levitátor (96)
- Libsysutils: zergRush (96)
- Jádro: mempodroid (97)
- Povolení souborů a útoky na symbolické odkazy
- Obnova Adb (98)
- Exynos4: zneužívání exynosů (99)
- Diag: svítí / diaggetroot (99)
- Shrnutí (100)
Kapitola 4. Kontrola zabezpečení aplikace 101 - Běžné chyby 101
- Problémy s povolením aplikace (102)
- Nejistý přenos citlivých dat (103)
- Ukládání nezajištěných dat (104)
- Úniky informací prostřednictvím protokolů (105)
- Nezajištěné ukončení IPC (106)
- Případová studie: Mobilní bezpečnostní aplikace (108)
- Profilování (108)
- Statická analýza
- Dynamická analýza (124)
- Útok (132)
- Případová studie: Klient SIP (134)
- Drozer (134)
- Uznání (134)
- Snarfing (136)
- Injekční (138)
- Shrnutí (140)
Kapitola 5. Úrovně Androidu 141 - Základní terminologie (141)
- Vektory útoku (142)
- Útočná letadla (143)
- Klasifikace útočného letadla (144)
- Vlastnosti letadla 144
- Metoda klasifikace (145)
- Dálkově přístupná útočná letadla (145)
- Problémy se sítí (146)
- Síťové zásobníky (150)
- Sdílené síťové služby (151)
- Mobilní technologie (152)
- Útočné letadlo na straně uživatele
- Infrastruktura Google (158)
- Fyzické sousedství (164)
- Bezdrátová komunikace (164)
- Ostatní technologie (170)
- Místní útočná letadla (170)
- Prohlížení systému souborů (171)
- Hledání dalších místních útočných letadel 172
- Fyzická útočná letadla (176)
- Demontáž zařízení (177)
- USB (178)
- Jiná fyzická útočná letadla 181
- Vnější úpravy (182)
- Shrnutí (182)
Kapitola 6. Hledání slabostí pomocí Fuzzing 183 - Původ fuzzing (183)
- Identifikace cíle 185
- Vytváření zkreslených vstupů 185
- Zpracování vstupních údajů 186
- Monitorování výkonu (187)
- Fuzzing v systému Android (187)
- Fuzzing příjemců zpráv (188)
- Identifikace cíle (189)
- Generování vstupních dat 190
- Poskytování vstupních údajů 190
- Monitorovací test (191)
- Fuzzing Chrome pro Android (193)
- Volba cíle (193)
- Generování vstupních dat 195
- Zpracování vstupních údajů 197
- Monitorovací test (199)
- USB Attack Plane Fuzzing (201)
- USB Fuzzing výzvy
- Výběr režimu (202)
- Generování vstupu 203
- Zpracování vstupních údajů 205
- Monitorovací test (206)
- Shrnutí (207)
Kapitola 7. Hledání chyb a analýza slabosti 209 - Shromažďování všech dostupných informací (209)
- Výběr sady nástrojů (211)
- Ladění špatného konce 212
- Systémové protokoly (212)
- Náhrobek (213)
- Vzdálené ladění (214)
- Ladění kódu virtuálního stroje Dalvik 215
- Ladění ukázkové aplikace 216
- Prohlížení zdrojového kódu Android Framework 218
- Ladění stávajícího kódu 220
- Ladění nativního kódu 224
- Ladění s NDK 224
- Ladění pomocí Eclipse
- Ladění pomocí AOSP
- Zvyšování automatizace 235
- Ladění se symboly 237
- Ladění nepodporovaného zařízení nepodporujícího AOSP
- Ladění ve smíšeném režimu 244
- Alternativní techniky ladění 244
- Ladicí výrazy 244
- Ladění na zařízení
- Dynamicky se měnící binární
- Analýza zranitelnosti (247)
- Určení hlavní příčiny 247
- Posouzení použitelnosti
- Shrnutí (261)
Kapitola 8. Používání softwaru Userland 263 - Základy chyb paměti 263
- Přetečení vyrovnávací paměti zásobníku 264
- Využití haldy
- Historie veřejně známých exploitů (274)
- GingerBreak (275)
- zergRush (278)
- mempodroid (281)
- Použití prohlížeče Android (282)
- Porozumění chybě 283
- Kontrola haldy
- Shrnutí (288)
Kapitola 9. Programování orientované na návrat 289 - Historie a zdůvodnění (289)
- Samostatná mezipaměť dat a instrukcí 290
- Základy ROP v ARM
- Volání podprogramů v ARM 293
- Připojení gadgetů do řetězu (295)
- Identifikace potenciálních gadgetů (296)
- Případová studie: Android 4.0.1 Linker (297)
- Úprava ukazatele zásobníku 298
- Spuštění libovolného kódu z přidělené paměti (300)
- Shrnutí (304)
Kapitola 10. Hackování a napadení jádra 317 - Linuxové jádro v systému Android
- Extrahování jádra
- Výpis z firmwaru 319
- Stáhnout ze zařízení (321)
- Získání jádra z bootovacího obrazu
- Vybalení jádra
- Spuštěn upravený kód jádra
- Získání zdrojového kódu (324)
- Příprava prostředí sestavení
- Konfigurace jádra 328
- Používání vlastních modulů jádra
- Kompilace upraveného jádra
- Vytvoření spouštěcího obrazu (335)
- Spuštění upraveného jádra
- Ladění jádra
- Hlášení o chybách jádra
- Porozumění Jejda (344)
- Živé ladění s KGDB
- Využití jádra (352)
- Běžná jádra Androidu
- Extrahování adres 354
- Případové studie (356)
- Shrnutí (367)
Kapitola 11. Útok na RIL 311 - Úvod do RIL
- RIL Architecture (312)
- Architektura chytrého telefonu (313)
- Zásobník telefonu Android (313)
- Přizpůsobení telefonního zásobníku
- Služby RIL (rilda) (315)
- API vendor-ril (318)
- SMS (služba krátkých zpráv) (319)
- Odesílání a příjem SMS zpráv (319)
- Formát SMS (319)
- Komunikace s modemem (322)
- Emulace modemu pro fuzzing
- Fuzzing SMS v systému Android (324)
- Shrnutí (331)
Kapitola 12. Omezovací mechanismy využití 333 - Hodnocení (334)
- Podepisování kódu (334)
- Kalení haldy (336)
- Ochrana proti přetečení celého čísla
- Prevence provádění dat
- Randomizace adresního prostoru 340
- Zajištění zásobníku
- Zabezpečení formátovacích řetězců
- Přemístění jen pro čtení (345)
- Izolace prostředí
- Zabezpečení zdrojového kódu 346
- Mechanismy kontroly přístupu (348)
- Zabezpečení jádra
- Ukazatele a omezení protokolu
- Nulová boční ochrana (351)
- Oblasti paměti pouze pro čtení (351)
- Jiná bezpečnost (352)
- Shrnutí omezujících mechanismů zneužití 354
- Zakázání omezení 356
- Změna identity (356)
- Binární swap 357
- Úprava jádra 357
- Překonání limitů na využití 358
- Překonání zabezpečení zásobníku 358
- Překonání ASLR (359)
- Překonání ochranných opatření bránících provádění dat 359
- Překonání limitů jádra 359
- Pohled do budoucnosti (360)
- Oficiálně vypracované projekty (360)
- Komunitní léčení varlat 361
- Trochu spekulace (362)
- Shrnutí (362)
Kapitola 13. Hardwarové útoky - Komunikace s hardwarem
- Sériová rozhraní UART (364)
- I2C, SPI a jednovodičová rozhraní (368)
- JTAG (370)
- Hledání ladicích rozhraní 381
- Identifikace součásti 392
- Pořízení specifikace
- Problém s identifikací komponent 394
- Zachycování, sledování a vkládání dat (395)
- USB (395)
- Sériová rozhraní I2C, SPI a UART (399)
- Krádež dat a softwaru (404)
- Diskrétní přístup
- Invazivní metody přístupu k softwaru 407
- Co dělat s výpisem dat? (410)
- Pasti (414)
- Neobvyklá rozhraní
- Binární data a uzavřené protokoly
- Nefunkční ladicí rozhraní 415
- Rozvržení hesel 415
- Hesla bootloaderu, kombinace kláves a tiché terminály
- Upravené počáteční sekvence 416
- Skryté adresy (416)
- Ochranná pryskyřice (416)
- Šifrování obrazu, zmatek a narušení ladění
- Shrnutí (417)
Dodatek A. Nástroje - Vývojové nástroje (419)
- Android SDK (419)
- Android NDK (420)
- Zatmění (420)
- Zástrčka ADT (420)
- Balíček ADT (420)
- Studio Android (420)
- Nástroje pro získávání továrního firmwaru a úpravy paměti (421)
- Binwalk (421)
- fastboot (421)
- Samsung (421)
- NVIDIA (422)
- LG (422)
- HTC (423)
- Motorola (423)
- Nativní nástroje pro Android (424)
- BusyBox (424)
- setpropex (425)
- SQLite (425)
- strace (425)
- Nástroje pro připevnění a úpravu (425)
- Rámec ADBI (425)
- ldpreloadhook (426)
- Framework XPosed (426)
- Cydia substrát (426)
- Nástroje statické analýzy 426
- Smali a Baksmali (427)
- Androguard (427)
- apktool (427)
- dex2jar (427)
- jed (428)
- JD-GUI (428)
- JEB (428)
- Radare2 (428)
- Dekompilátor IDA Pro a Hex-Rays (429)
- Nástroje pro testování aplikací (429)
- Framework Drozer (Mercury) (429)
- iSEC Intent Sniffer and Intent Fuzzer (429)
- Hardwarové hackerské nástroje (430)
- Segger J-Link (430)
- JTAGulator (430)
- OpenOCD (430)
- Saleae (430)
- Bus Pirate (430)
- DobrýFET (431)
- TotalPhase Beagle USB (431)
- Facedancer21 (431)
- TotalPhase Aardvark I2C (431)
- Chip Quik (431)
- Teplovzdušná pistole (431)
- Xeltek SuperPro (432)
- IDA (432)
Dodatek B. Repozitáře otevřeného zdroje - Google (433)
- AOSP (433)
- Systém kontroly kódu Gerrit (434)
- Výrobci SoC (434)
- AllWinner (435)
- Intel (435)
- Marvell (435)
- MediaTek (435)
- Nvidia (436)
- Texas Instruments (436)
- Qualcomm (436)
- Samsung (437)
- Výrobci zařízení (OEM) (437)
- ASUS (438)
- HTC (438)
- LG (438)
- Motorola (439)
- Samsung (439)
- Sony Mobile (439)
- Zdroje externích projektů (440)
- Jiné zdroje (440)
- Upravený tovární firmware (440)
- Linaro (441)
- Replikant (441)
- Indexy kódu (441)
- Na volné noze (441)
Dodatek C. Odkazy Rejstřík (501) |