注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)Linux二進(jìn)制分析

Linux二進(jìn)制分析

Linux二進(jìn)制分析

定 價(jià):¥59.00

作 者: [美] 瑞安,奧尼爾(Ryan O'Neill) 著;棣琦 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 操作系統(tǒng)/系統(tǒng)開發(fā) 計(jì)算機(jī)?網(wǎng)絡(luò)

ISBN: 9787115469236 出版時(shí)間: 2017-12-01 包裝: 平裝
開本: 16開 頁數(shù): 254 字?jǐn)?shù):  

內(nèi)容簡介

  二進(jìn)制分析屬于信息安全業(yè)界逆向工程中的一種技術(shù),通過利用可執(zhí)行的機(jī)器代碼(二進(jìn)制)來分析應(yīng)用程序的控制結(jié)構(gòu)和運(yùn)行方式,有助于信息安全從業(yè)人員更好地分析各種漏洞、病毒以及惡意軟件,從而找到相應(yīng)的解決方案。《Linux二進(jìn)制分析》是一本剖析Linux ELF工作機(jī)制的圖書,共分為9章,其內(nèi)容涵蓋了Linux環(huán)境和相關(guān)工具、ELF二進(jìn)制格式、Linux進(jìn)程追蹤、ELF病毒技術(shù)、Linux二進(jìn)制保護(hù)、Linux中的ELF二進(jìn)制取證分析、進(jìn)程內(nèi)存取證分析、擴(kuò)展核心文件快照技術(shù)、Linux/proc/kcore分析等。《Linux二進(jìn)制分析》適合具有一定的Linux操作知識,且了解C語言編程技巧的信息安全從業(yè)人員閱讀。

作者簡介

  Ryan O'Neill(ELF大師)是一名計(jì)算機(jī)安全研究員兼軟件工程師,具有逆向工程、軟件開發(fā)、安全防御和取證分析技術(shù)方面的背景。他是在計(jì)算機(jī)黑客亞文化的世界中成長起來的——那個由EFnet、BBS系統(tǒng)以及系統(tǒng)可執(zhí)行棧上的遠(yuǎn)程緩沖區(qū)溢出組成的世界。他在年輕時(shí)就接觸了系統(tǒng)安全、開發(fā)和病毒編寫等領(lǐng)域。他對計(jì)算機(jī)黑客的極大熱情如今已經(jīng)演變成了對軟件開發(fā)和專業(yè)安全研究的熱愛。Ryan在DEFCON和RuxCon等很多計(jì)算機(jī)安全會議上發(fā)表過演講,還舉辦了一個為期兩天的ELF二進(jìn)制黑客研討會。他的職業(yè)生涯非常成功,曾就職于Pikewerks、Leviathan安全集團(tuán)這樣的大公司,最近在Backtrace擔(dān)任軟件工程師。Ryan還未出版過其他圖書,不過他在Phrack和VXHeaven這樣的在線期刊上發(fā)表的論文讓他聲名遠(yuǎn)揚(yáng)。還有許多其他的作品可以從他的網(wǎng)站(http://www.bitlackeys.org)上找到。

圖書目錄

第1章 Linux環(huán)境和相關(guān)工具\(yùn)t1
1.1 Linux工具\(yùn)t1
1.1.1 GDB\t2
1.1.2 GNU binutils中的objdump\t2
1.1.3 GNU binutils中的objcopy\t3
1.1.4 strace\t3
1.1.5 ltrace\t4
1.1.6 基本的ltrace命令\t4
1.1.7 ftrace\t4
1.1.8 readelf\t4
1.1.9 ERESI——ELF反編譯系統(tǒng)接口\t5
1.2 有用的設(shè)備和文件\t6
1.2.1 /proc//maps\t6
1.2.2 /proc/kcore\t6
1.2.3 /boot/System.map\t6
1.2.4 /proc/kallsyms\t7
1.2.5 /proc/iomem\t7
1.2.6 ECFS\t7
1.3 鏈接器相關(guān)環(huán)境指針\t7
1.3.1 LD_PRELOAD環(huán)境變量\t8
1.3.2 LD_SHOW_AUXV環(huán)境變量\t8
1.3.3 鏈接器腳本\t9
1.4 總結(jié)\t10
第2章 ELF二進(jìn)制格式\t11
2.1 ELF文件類型\t12
2.2 ELF程序頭\t14
2.2.1 PT_LOAD\t14
2.2.2 PT_DYNAMIC——動態(tài)段的Phdr\t15
2.2.3 PT_NOTE\t17
2.2.4 PT_INTERP\t17
2.2.5 PT_PHDR\t17
2.3 ELF節(jié)頭\t18
2.3.1 .text節(jié)\t20
2.3.2 .rodata節(jié)\t20
2.3.3 .plt節(jié)\t21
2.3.4 .data節(jié)\t21
2.3.5 .bss節(jié)\t21
2.3.6 .got.plt節(jié)\t21
2.3.7 .dynsym節(jié)\t21
2.3.8 .dynstr節(jié)\t22
2.3.9 .rel.*節(jié)\t22
2.3.10 .hash節(jié)\t22
2.3.11 .symtab節(jié)\t22
2.3.12 .strtab節(jié)\t23
2.3.13 .shstrtab節(jié)\t23
2.3.14 .ctors和.dtors節(jié)\t23
2.4 ELF符號\t27
2.4.1 st_name\t28
2.4.2 st_value\t28
2.4.3 st_size\t28
2.4.4 st_other\t28
2.4.5 st_shndx\t29
2.4.6 st_info\t29
2.5 ELF重定位\t34
2.6 ELF動態(tài)鏈接\t43
2.6.1 輔助向量\t44
2.6.2 了解PLT/GOT\t46
2.6.3 重溫動態(tài)段\t49
2.7 編碼一個ELF解析器\t52
2.8 總結(jié)\t55
第3章 Linux進(jìn)程追蹤\t57
3.1 ptrace的重要性\t57
3.2 ptrace請求\t58
3.3 進(jìn)程寄存器狀態(tài)和標(biāo)記\t60
3.4 基于ptrace的調(diào)試器示例\t61
3.5 ptrace調(diào)試器\t67
3.6 高級函數(shù)追蹤軟件\t75
3.7 ptrace和取證分析\t75
3.8 進(jìn)程鏡像重建\t77
3.8.1 重建進(jìn)程到可執(zhí)行文件的挑戰(zhàn)\t78
3.8.2 重建可執(zhí)行文件的挑戰(zhàn)\t78
3.8.3 添加節(jié)頭表\t79
3.8.4 重建過程算法\t79
3.8.5 在32位測試環(huán)境中使用Quenya重建進(jìn)程\t81
3.9 使用ptrace進(jìn)行代碼注入\t83
3.10 簡單的例子演示復(fù)雜的過程\t91
3.11 code_inject工具演示\t92
3.12 ptrace反調(diào)試技巧\t92
3.13 總結(jié)\t94
第4章 ELF病毒技術(shù)——Linux/UNIX病毒\t95
4.1 ELF病毒技術(shù)\t96
4.2 設(shè)計(jì)ELF病毒面臨的挑戰(zhàn)\t97
4.2.1 寄生代碼必須是獨(dú)立的\t97
4.2.2 字符串存儲的復(fù)雜度\t99
4.2.3 尋找存放寄生代碼的合理空間\t100
4.2.4 將執(zhí)行控制流傳給寄生代碼\t100
4.3 ELF病毒寄生代碼感染方法\t101
4.3.1 Silvio填充感染\t101
4.3.2 逆向text感染\t106
4.3.3 data段感染\t108
4.4 PT_NOTE到PT_LOAD轉(zhuǎn)換感染\t110
4.5 感染控制流\t112
4.5.1 直接PLT感染\t113
4.5.2 函數(shù)蹦床(function trampolines)\t113
4.5.3 重寫.ctors/.dtors函數(shù)指針\t114
4.5.4 GOT感染或PLT/GOT重定向\t115
4.5.5 感染數(shù)據(jù)結(jié)構(gòu)\t115
4.5.6 函數(shù)指針重寫\t115
4.6 進(jìn)程內(nèi)存病毒和rootkits——遠(yuǎn)程代碼注入技術(shù)\t115
4.6.1 共享庫注入\t116
4.6.2 text段代碼注入\t120
4.6.3 可執(zhí)行文件注入\t120
4.6.4 重定位代碼注入——ET_REL注入\t120
4.7 ELF反調(diào)試和封裝技術(shù)\t121
4.7.1 PTRACE_TRACEME技術(shù)\t121
4.7.2 SIGTRAP處理技術(shù)\t122
4.7.3 /proc/self/status技術(shù)\t122
4.7.4 代碼混淆技術(shù)\t123
4.7.5 字符串表轉(zhuǎn)換技術(shù)\t124
4.8 ELF病毒檢測和殺毒\t124
4.9 總結(jié)\t126
第5章 Linux二進(jìn)制保護(hù)\t127
5.1 ELF二進(jìn)制加殼器\t127
5.2 存根機(jī)制和用戶層執(zhí)行\(zhòng)t128
5.3 保護(hù)器存根的其他用途\t133
5.4 現(xiàn)存的ELF二進(jìn)制保護(hù)器\t133
5.4.1 DacryFile——Grugq于2001年發(fā)布\t134
5.4.2 Burneye——Scut于2002年發(fā)布\t134
5.4.3 Shiva——Neil Mehta和Shawn Clowes于2003年發(fā)布\t135
5.4.4 May's Veil——Ryan O'Neill于2014年發(fā)布\t136
5.5 下載Maya保護(hù)的二進(jìn)制文件\t142
5.6 二進(jìn)制保護(hù)中的反調(diào)試\t142
5.7 防模擬技術(shù)\t143
5.7.1 通過系統(tǒng)調(diào)用檢測模擬\t144
5.7.2 檢測模擬的CPU不一致\t144
5.7.3 檢測特定指令之間的時(shí)延\t144
5.8 混淆方法\t145
5.9 保護(hù)控制流完整性\t145
5.9.1 基于ptrace的攻擊\t145
5.9.2 基于安全漏洞的攻擊\t146
5.10 其他資源\t147
5.11 總結(jié)\t147
第6章 Linux下的ELF二進(jìn)制取證分析\t149
6.1 檢測入口點(diǎn)修改技術(shù)\t150
6.2 檢測其他形式的控制流劫持\t154
6.2.1 修改.ctors/.init_array節(jié)\t154
6.2.2 檢測PLT/GOT鉤子\t155
6.2.3 檢測函數(shù)蹦床\t158
6.3 識別寄生代碼特征\t159
6.4 檢查動態(tài)段是否被DLL注入\t161
6.5 識別逆向text填充感染\t164
6.6 識別text段填充感染\t166
6.7 識別被保護(hù)的二進(jìn)制文件\t170
6.8 IDA Pro\t175
6.9 總結(jié)\t175
第7章 進(jìn)程內(nèi)存取證分析\t177
7.1 進(jìn)程內(nèi)存布局\t178
7.1.1 可執(zhí)行文件內(nèi)存映射\t179
7.1.2 程序堆\t179
7.1.3 共享庫映射\t180
7.1.4 棧、VDSO和vsyscall\t180
7.2 進(jìn)程內(nèi)存感染\t181
7.2.1 進(jìn)程感染工具\(yùn)t181
7.2.2 進(jìn)程感染技術(shù)\t182
7.3 檢測ET_DYN注入\t184
7.3.1 Azazel:用戶級rootkit檢測\t184
7.3.2 映射出進(jìn)程的地址空間\t184
7.3.3 查找棧中的LD_PRELOAD\t187
7.3.4 檢測PLT/GOT鉤子\t188
7.3.5 ET_DYN注入內(nèi)部原理\t190
7.3.6 操縱VDSO\t194
7.3.7 共享目標(biāo)文件加載\t195
7.3.8 檢測.so注入的啟發(fā)方法\t196
7.3.9 檢測PLT/GOT鉤子的工具\(yùn)t197
7.4 Linux ELF核心文件\t198
7.5 總結(jié)\t204
第8章 ECFS——擴(kuò)展核心文件快照技術(shù)\t205
8.1 歷史\t205
8.2 ECFS原理\t206
8.3 ECFS入門\t206
8.3.1 將ECFS嵌入到核心處理器中\(zhòng)t207
8.3.2 在不終止進(jìn)程的情況下使用ECFS快照\t208
8.4 libecfs——解析ECFS文件的庫\t208
8.5 readecfs工具\(yùn)t209
8.6 使用ECFS檢測被感染的進(jìn)程\t210
8.6.1 感染主機(jī)進(jìn)程\t210
8.6.2 捕獲并分析ECFS快照\t211
8.6.3 使用readecfs提取寄生代碼\t215
8.6.4 Azazel用戶級rootkit分析\t216
8.7 ECFS參考指南\t224
8.7.1 ECFS符號表重建\t225
8.7.2 ECFS節(jié)頭\t226
8.7.3 使用ECFS文件作為常規(guī)的核心文件\t229
8.7.4 libecfs API的使用\t229
8.8 使用ECFS恢復(fù)中斷的進(jìn)程\t230
8.9 了解更多ECFS相關(guān)內(nèi)容\t231
8.10 總結(jié)\t232
第9章 Linux/proc/kcore分析\t233
9.1 Linux內(nèi)核取證分析和rootkit\t233
9.2 沒有符號的備份vmlinux\t234
9.3 探索/proc/kcore和GDB\t236
9.4 直接修改sys_call_table\t237
9.4.1 檢測sys_call_table修改\t238
9.4.2 內(nèi)核函數(shù)蹦床\t238
9.4.3 函數(shù)蹦床示例\t239
9.4.4 檢測函數(shù)蹦床\t241
9.4.5 檢測中斷處理器修復(fù)\t243
9.5 Kprobe rootkit\t243
9.6 調(diào)試寄存器rootkit——DRR\t244
9.7 VFS層rootkit\t244
9.8 其他內(nèi)核感染技術(shù)\t245
9.9 vmlinux和.a(chǎn)ltinstructions修補(bǔ)\t245
9.9.1 .a(chǎn)ltinstructions和.a(chǎn)ltinstr_replace\t246
9.9.2 arch/x86/include/asm/alternative.h代碼片段\t246
9.9.3 使用textify驗(yàn)證內(nèi)核代碼完整性\t247
9.9.4 使用textify檢查sys_call_table\t247
9.10 使用taskverse查看隱藏進(jìn)程\t248
9.11 感染的LKM——內(nèi)核驅(qū)動\t249
9.11.1 方法一:感染LKM文件——符號劫持\t249
9.11.2 方法二:感染LKM文件——函數(shù)劫持\t249
9.11.3 檢測被感染的LKM\t250
9.12 /dev/kmem和/dev/mem\t250
9.12.1 /dev/mem\t251
9.12.2 FreeBSD /dev/kmem\t251
9.13 K-ecfs ——內(nèi)核ECFS\t251
9.14 內(nèi)核黑客工具\(yùn)t252
9.14.1 通用的逆向工程和調(diào)試\t253
9.14.2 高級內(nèi)核劫持/調(diào)試接口\t253
9.14.3 本章提到的論文\t253
9.15 總結(jié)\t254

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號