基本信息
原書名:Shellcoder's Programming Uncovered
原出版社:A-List Publishing
作者:(美)Kris Kaspersky
譯者:羅愛國 鄭艷傑 等
叢書名:安全技術大系
出版社:電子工業出版社
ISBN:7121030306
出版日期:2006 年9月
開本:16開
頁碼:376
版次:1-1
編輯推薦
·軟體安全專家Kris Kaspersky最新力作
·打開魔法之門,進入隱藏在高級語言編程背後的精彩世界
·全面講述套用軟體和作業系統漏洞的生成與發現、攻擊與保護的技巧
內容簡介
全書的內容緊密圍繞shellcode編程展開,系統地闡述了作為一名shellcoder應該掌握的知識要點。除了shellcode之外,作者還介紹了手機,bios等涉及安全的新領域。
本書的第1部分介紹了編寫shellcode前應掌握的一些基本概念,應熟悉的軟體工具等內容,還介紹了利用gprs入侵的細節。第2部分則以常見的棧溢出、堆溢出問題開始,接著介紹了seh、格式化漏洞等內容,最後介紹怎樣解決這些漏洞,並以實際的漏洞為例,講解怎樣利用漏洞。第3部分主要放在編寫shellcode上,介紹怎樣編寫適應多種環境的shellcode,除了以windows平台為主,還稍帶介紹了linux平台上shellcode,第15章則介紹了怎樣編譯與反編譯shellcode。第4部分介紹了網路蠕蟲與病毒。第5部分介紹了防火牆,蜜罐,和其他的保護系統。重點介紹了怎樣突破這些保護系統。第6部分介紹了除常見攻擊對象之外的其他目標,如無線網路,手機,bios等。
書中還包括了大量未分開的用c/ic編語言編寫攻擊代碼的高級技巧。
目錄
第1部分 shellcode簡介
第1章 必需的工具 3
1.1 程式語言 7
1.2 分析,調試,逆向工程的工具 8
1.3 必讀書目和其他的參考資料 10
第2章 彙編語言——概覽 12
2.1 彙編語言基本原理 13
2.2 用c程式解釋彙編概念 14
2.3 以內聯彙編為平台 16
第3章 揭秘利用gprs的入侵 18
3.1 匿名為什麼也不安全 18
3.2 利用gprs入侵 21
3.2.1 gprs數據機vs手機 22
3.2.2 深入了解手機 22
3.2.3 從鍵盤改寫nam 24
3.2.4 手動改寫nam 26
3.2.5 參考資料 29
第2部分 溢出錯誤
第4章 受溢出影響的緩衝區(怪圈) 33
4.1 溢出錯誤分類(極度無聊) 34
4.2 產生溢出錯誤的歷史必然性 36
4.3 有關溢出錯誤的神話與傳說 37
4.4 攻擊的目標和可能性 39
4.4.1 讀敏感變數 39
4.4.2 修改秘密變數 39
4.4.3 把控制權傳給程式中的秘密函式 40
4.4.4 把控制權傳給入侵者的代碼 40
4.4.5 溢出攻擊的目標 40
4.4.6 不同溢出類型的特徵 48
第5章 利用seh 56
5.1 關於結構化異常的簡簡訊息 56
5.2 捕獲控制 62
5.3 抑制應用程式異常終止 63
第6章 受控的格式符 64
6.1 支持格式化輸出的函式 65
6.2 cfingerd補丁 66
6.3 潛在的威脅源 66
6.3.1 強制偽造格式符 66
6.3.2 dos實現 67
6.3.3 peek實現 69
6.3.4 poke實現 71
6.3.5 不均衡的格式符 73
6.3.6 目標緩衝區溢出 73
第7章 溢出實例 75
7.1 威脅源 75
7.2 技術細節 76
7.3 攻擊代碼 77
7.4 使攻擊代碼復活 80
7.5 編寫shellcode 81
7.6 勝利或失敗 81
7.7 路在何方? 83
第8章 搜尋溢出的緩衝區 84
8.1 埋沒在列印紙下 85
8.2 二進制代碼歷險 87
8.2.1 代碼分析step by step 88
8.2.2 重要提示 95
8.3 溢出錯誤的實例 96
第9章 保護緩衝區免遭溢出之害 102
9.1 反黑客的技術 103
9.1.1 stackguard 103
9.1.2 不可執行棧(nonexecutable stack) 104
9.1.3 its4軟體安全工具 104
9.1.4 flawfinder 104
9.2 記憶體分配的問題 105
9.2.1 ccured 105
9.2.2 memwatch 105
9.2.3 dmalloc,the debug malloc library 106
9.2.4 checker 106
第3部分 設計shellcode的秘密
第10章 編寫shellcode的問題 113
10.1 無效的字元 113
改寫地址的技巧 113
10.2 大小很重要 118
10.3 尋找自我 119
10.4 調用系統函式的技術 121
10.4.1 在不同的作業系統里實現系統調用 127
10.4.2 溢出之後恢復脆弱的程式 132
10.5 關於shellcoding的有趣參考 132
第11章 寫可移植shellcode的技巧 134
11.1 可移植shellcode的需求 135
11.2 達成可移植之路 135
11.3 硬編碼的缺點 136
11.4 直接在記憶體里搜尋 138
11.5 over open sights: peb 140
11.6 展開seh棧 141
11.7 原始api 142
11.8 確保可移植的不同方法 143
第12章 自修改基礎 144
12.1 了解自修改代碼 144
12.2 建立自修改代碼的原則 147
12.2.1 the matrix 153
12.2.2 通過網際網路修改
12.2.2 代碼的問題 156
12.2.3 關於自修改的筆記 157
第13章 在linux里捉迷藏 159
13.1 可載入核心模組 160
13.2 從任務列表里移走進程 164
13.3 捕獲系統調用 168
13.4 捕獲檔案系統請求 169
13.5 當模組不可用時 171
13.6 其他的隱藏方法 174
第14章 在linux里捕獲ring 0 176
14.1 hacking的正道 176
14.2 linux下核心藍牙本地攻擊 177
14.3 elfs fall into the dump 178
14.4 多執行緒的問題 179
14.5 在多處理器機器上得到root 181
14.6 有趣的資源 183
第15章 編譯與反編譯shellcode 184
反編譯shellcode 188
第4部分 網路蠕蟲和本地病毒
第16章 蠕蟲的生存周期 193
16.1 真實介紹前的閒言碎語 194
16.2 蠕蟲介紹 195
16.2.1 蠕蟲的結構解剖 196
16.2.2 蠕蟲傳播機理 204
16.2.3 蠕蟲的到達 205
16.2.4 感染的策略與戰術 206
16.2.5 為自然生態環境而努力:在同伴面前的決擇,生或死 209
16.2.6 怎樣發現蠕蟲 213
16.2.7 怎樣戰勝蠕蟲 216
16.2.8 暴風雨前的平靜結束了? 217
16.2.9 有趣的網際網路資源 219
第17章 unix里的本地病毒 221
病毒活動需要的條件 223
第18章 scripts里的病毒 225
第19章 elf檔案 231
19.1 elf檔案的結構 233
19.2 常見結構和病毒行為的策略 235
19.2.1 通過合併來感染 236
19.2.2 通過擴展檔案的最後一節來感染 238
19.2.3 通過壓縮原始檔案的部分內容來感染 241
19.2.4 通過延伸檔案的代碼節來感染 246
19.2.5 通過把代碼節下移來感染 249
19.2.6 通過創建定製的節來感染 251
19.2.7 在檔案和頭部之間插入來感染 251
第20章 獲取控制權的方法 253
20.1 替換進入點(entry point) 253
20.2 在進入點附近插入病毒碼 254
20.3 修改導入表(import table) 254
第21章 被病毒感染的主要徵兆 256
21.1 反病毒程式有用嗎? 261
21.2 有關病毒感染的網際網路資源 262
第22章 最簡單的windows nt病毒 263
22.1 病毒操作的算法 264
22.2 實驗室病毒的源碼 265
22.3 編譯並測試這個病毒 268
22.4 枚舉流 270
22.5 有用的資源 270
第5部分 防火牆,蜜罐,和其他保護系統
第23章 繞過防火牆 273
23.1 防火牆能防禦和不能防禦的威脅 274
23.2 探測並識別防火牆 276
23.3 穿過防火牆的掃描和跟蹤 280
23.4 滲透防火牆 281
23.5 關於防火牆的連線 282
第24章 從防火牆逃脫 283
24.1 防火牆做與不做什麼 283
24.2 與遠程主機建立連線 285
24.2.1 綁定exploit,或“幼稚的攻擊” 285
24.2.2 反向exploit 288
24.2.3 find exploit 290
24.2.4 重用exploit 292
24.2.5 fork exploit 294
24.2.6 sniffer exploit,或被動掃描 295
第25章 在unix和windows nt下組織遠程shell 296
25.1 blind shell 296
25.2 多功能shell 297
第26章 黑客喜歡蜂蜜 300
26.1 罐里有什麼? 301
26.2 準備攻擊 302
26.3 對蜜罐的認識(casting light on honeypots) 303
26.4 騙人的詭計 303
26.5 攻擊蜜罐 303
26.6 在蜜中淹死 304
第27章 竊聽lan 305
27.1 攻擊的目標和方法 305
hub和相關的缺陷 306
27.2 被動竊聽 307
檢測被動竊聽 314
27.3 主動竊聽或arp欺騙 315
檢測主動竊聽 317
27.4 克隆網卡 318
檢測克隆並抵制它 318
27.5 竊聽dial-up流量 318
27.6 sniffers無用時(when sniffers are useless) 319
27.7 秘密竊聽 319
27.8 與竊聽有關的資源 320
第28章 攻擊之下的資料庫 321
28.1 薄弱的密碼加密算法 322
28.2 密碼竊聽 322
28.3 hacking a script 323
28.4 難忘的查詢或sql注入 324
28.5 怎樣檢測sql伺服器的存在 327
28.6 抵抗入侵 328
第6部分 可用於插入的外來對象
第29章 攻擊藍牙 331
29.1 什麼是藍牙? 332
29.2 精確射擊型天線 333
與天線有關的有趣的連線 335
29.3 認證和授權 335
關於加密算法的有趣連線 337
29.4 攻擊方法 338
與藍牙安全相關的連線 339
29.5 藍牙hacking工具概述 339
Widcomm里的溢出錯誤 340
第30章 節省gprs費用 342
30.1 通過代理伺服器工作 342
30.2 google web accelerator 343
其他的Web加速器 344
30.3 通過telnet隧道 345
30.4 通過icmp隧道 346
黑客軟體 347
第31章 關於flashing bios傳說與神話 348
31.1 升級bios的好處 351
31.1.1 支持新設備 352
31.1.2 新操作模組 353
31.1.3 解決衝突 353
31.2 什麼時候升級bios 355
31.3 hacking bios 355
31.3.1 深入了解刷新工具 358
31.3.2 刷新bios的技巧 358
31.3.3 自我維護的bios 360
31.3.4 不能自我維護的bios 362
第32章 病毒感染bios 363
32.1 怎么進行 364
32.2 深入bios 365
32.3 baptizing by fire, or creating an isa rom module 369
32.4 修改啟動塊 373
升高柵欄 374
32.5 系統超頻 375
32.6 與bios有關的有用的連線 376
cd內容 377
前言
我們生活在一個殘酷無情的世界里,幾乎所有機器上的軟體都有安全漏洞,而且其中的大部分還非常嚴重。黑客、蠕蟲、病毒迅速利用這些漏洞,從網路的各個角落發起攻擊。據統計,絕大多數的遠程攻擊是通過溢出緩衝區來完成的,而最常見的就是棧溢出。可以毫不誇張地說,精通溢出緩衝區的那些人主宰著整個世界。如果你希望在如此惡劣的生存環境尋找一本生存指南,從而在易受溢出影響的緩衝區里遊刃有餘,那么,本書就是為你準備的。隱藏在高級語言編程背後的是一個異常精彩的世界,本書將會為你打開進入它的魔法之門。
溢出錯誤為什麼如此重要呢?我們能利用它做些什麼?怎樣發現脆弱的緩衝區?這樣的緩衝區對shellcode有何限制?怎樣克服這些局限性?應該用什麼樣的工具編譯shellcode?怎樣做到向遠程主機傳送shellcode而不會引起人們的注意?怎樣繞過防火牆?怎樣發現並分析其他人的shellcode?怎樣保護自己的程式,使它免受溢出之害?
大家都知道,反病毒廠商的圈子相對比較封閉,他們很少向外界透露信息,也不大樂意接受新成員,他們擁有的信息只對圈內人士開放。部分原因可能是基於安全性的考慮,但主要原因可能是怕影響到企業的競爭力。沒關係,本書將從某種程度上揭開這層神秘的面紗。