內容簡介
《Windows信息安全和網路攻防》以信息技術(IT)企業的實際用人要求為導向,總結筆者在網路安全行業十多年的經驗編寫而成。《Windows信息安全和網路攻防》共11章,內容包括TCP/IP基礎、搭建網路攻防實驗環境、網路攻防和網路命令、木馬技術研究、踩點與網路掃描、Windows套用層軟體漏洞分析、Windows核心編程、安全網路通信、SSL-TLS編程、IPv6網路滲透測試、網路安全抓包WinPcap編程。 《Windows信息安全和網路攻防》內容緊湊翔實、語言簡練、實用性強,可作為網路系統運維人員工作和學習的參考用書,也可作為高等院校計算機相關專業的教材。
圖書目錄
目 錄
第1章 TCP/IP基礎 1
1.1 什麼是TCP/IP 1
1.2 TCP/IP的分層結構 1
1.3 套用層 6
1.3.1 DNS 6
1.3.2 連線埠 6
1.4 傳輸層 7
1.4.1 TCP 7
1.4.2 UDP 8
1.5 網路層 8
1.5.1 IP 8
1.5.2 ARP 14
1.5.3 RARP 16
1.5.4 ICMP 16
1.6 網路接口層 25
1.6.1 網路接口層的基本概念 25
1.6.2 網路接口層的主要功能 26
1.7 TCP/IP的安全性研究 27
第2章 搭建網路攻防實驗環境 29
2.1 準備虛擬機環境 29
2.1.1 在VMware下安裝Windows 7系統 29
2.1.2 開啟root賬戶 33
2.1.3 關閉防火牆 34
2.1.4 配置安裝源 34
2.1.5 安裝網路工具包 35
2.1.6 啟用SSH 36
2.1.7 快照功能 37
2.1.8 宿主機連線虛擬機 37
2.1.9 和虛擬機互傳檔案 51
2.2 編程利器Visual C++2017 51
2.2.1 安裝Visual C++ 2017及其“幫助”文檔 52
2.2.2 認識Visual C++ 2017集成開發環境 53
第3章 網路攻防和網路命令 59
3.1 網路攻擊 60
3.1.1 攻擊技術的特徵 60
3.1.2 網路攻擊的種類 61
3.1.3 黑客常用的攻擊手段 61
3.2 網路防禦研究 62
3.2.1 防禦模型 62
3.2.2 防禦體系 63
3.2.3 防禦原則 64
3.3 防禦關鍵技術 65
3.3.1 陷阱技術 65
3.3.2 隔離技術 66
3.4 黑客遠程攻擊的基本步驟 68
3.4.1 隱藏IP 68
3.4.2 黑客踩點與掃描 68
3.4.3 獲取許可權 69
3.4.4 遠程控制 69
3.5 防範遠程攻擊的基本步驟 69
3.5.1 網路隱身及安全接入 70
3.5.2 保護系統許可權 70
3.5.3 防毒防毒 70
3.6 基本的網路命令 70
3.6.1 獲取本地主機的IP位址 71
3.6.2 探測其他主機的IP位址 72
3.6.3 檢測網路的連通情況 73
3.6.4 和賬戶有關的命令 75
第4章 木馬技術研究 79
4.1 木馬的概念 80
4.1.1 木馬的定義 80
4.1.2 木馬的產生 81
4.1.3 木馬的分類 81
4.1.4 木馬的發展歷程 82
4.1.5 木馬的發展趨勢 83
4.2 木馬的工作原理及其技術分析 84
4.2.1 基本工作原理 84
4.2.2 木馬的植入技術 84
4.2.3 木馬的自啟動技術 85
4.2.4 木馬的隱藏技術 85
4.2.5 木馬的通信技術 87
4.3 木馬檢測技術 89
4.3.1 特徵碼技術 89
4.3.2 虛擬機技術 90
4.3.3 啟發式技術 90
4.4 獲取本地計算機的名稱和IP 92
4.4.1 gethostname函式 92
4.4.2 gethostbyname函式 92
4.4.3 inet_ntoa函式 93
4.5 獲取本機子網IP位址和子網掩碼 95
4.6 獲取本機物理網卡地址信息 97
4.7 獲取本機所有網卡(包括虛擬網卡)的列表和信息 99
4.8 獲取本地計算機的IP統計數據 102
4.9 獲取本機的DNS地址 105
4.10 獲取本機的TCP統計數據 106
4.11 獲取本機的UDP統計數據 109
4.12 獲取本機支持的網路協定信息 110
4.13 獲取本地計算機的域名 112
4.14 綜合案例:實現一個木馬 113
第5章 踩點與網路掃描 136
5.1 踩點 136
5.1.1 什麼是踩點 136
5.1.2 踩點的目標 136
5.2 掃描前先隱藏自己 137
5.3 掃描概述 138
5.4 連線埠掃描的相關知識 138
5.4.1 連線埠 138
5.4.2 TCP三次握手過程 139
5.4.3 連線埠掃描 139
5.5 作業系統識別技術 141
5.6 與掃描相關的幾個網路命令 142
5.6.1 測試物理網路的ping命令 142
5.6.2 識別目標作業系統類型 143
5.6.3 查看網路連線和連線埠的netstat命令 144
5.7 Nmap掃描器 145
5.7.1 Nmap所涉及的相關技術 146
5.7.2 Nmap的下載和安裝 146
5.7.3 Nmap的主要掃描類型 148
5.7.4 Nmap的使用實例 149
5.8 原始套接字編程 153
5.8.1 原始套接字概述 153
5.8.2 原始套接字的強大功能 153
5.8.3 原始套接字的基本編程步驟 154
5.8.4 常規編程示例 158
5.8.5 網路嗅探器的實現 165
5.8.6 嗅探網路中的密碼 170
第6章 Windows套用層軟體漏洞分析 175
6.1 漏洞的基本概念 176
6.2 漏洞產生的原因 177
6.3 漏洞的分類 177
6.4 漏洞掃描原理和關鍵技術 178
6.4.1 模擬攻擊技術 178
6.4.2 外掛程式技術 179
6.5 Windows平台下的套用漏洞概述 180
6.6 緩衝區溢出漏洞 180
6.6.1 緩衝區溢出漏洞成因分析 181
6.6.2 緩衝區溢出漏洞利用 183
6.7 堆/棧溢出漏洞 185
6.8 格式化字元串漏洞 185
6.9 SQL注入漏洞 189
6.9.1 SQL注入漏洞成因分析 189
6.9.2 SQL注入漏洞利用 189
6.10 XSS跨站腳本漏洞 190
第7章 Windows核心編程 192
7.1 Windows驅動的發展歷程 192
7.2 Windows作業系統 193
7.3 WDF的基本概念 194
7.4 WDF的基本結構 195
7.4.1 基本對象 195
7.4.2 WDF的層次結構 196
7.4.3 WDF的重要函式 197
7.4.4 I/O 請求包 197
7.5 驅動程式的開發環境 198
7.5.1 開發工具的選擇 198
7.5.2 安裝WDK 199
7.5.3 框架自動生成的WDK程式 202
7.5.4 控制設備 207
7.5.5 創建控制設備的WDK驅動 209
7.5.6 在Windows 7中載入驅動 219
7.5.7 在Windows 10中載入驅動 221
第8章 安全網路通信 224
8.1 對稱加密算法 224
8.2 流加密算法 225
8.2.1 基本概念 225
8.2.2 流密碼和分組密碼的比較 226
8.2.3 RC4算法 226
8.3 分組加密算法 234
8.3.1 工作模式 234
8.3.2 短塊加密 239
8.3.3 DES和3DES算法 239
8.3.4 SM4算法 255
8.4 TCP套接字編程的基本步驟 271
8.5 協定族和地址族 272
8.6 socket地址 274
8.6.1 通用socket地址 274
8.6.2 專用socket地址 275
8.6.3 IP位址轉換 276
8.6.4 獲取套接字地址 278
8.7 MFC套接字編程 280
8.8 CAsyncSocket類 280
8.8.1 基本概念 280
8.8.2 成員函式 280
8.8.3 基本用法 285
8.8.4 網路事件處理 286
8.9 CSocket類 295
8.9.1 基本概念 295
8.9.2 成員函式 295
8.9.3 基本用法 296
第9章 SSL-TLS編程 306
9.1 SSL協定規範 306
9.1.1 什麼是SSL協定 306
9.1.2 SSL協定的優點 307
9.1.3 SSL協定的發展 307
9.1.4 SSL v3/TLS提供的服務 307
9.1.5 SSL協定層次結構模型 308
9.1.6 SSL記錄層協定 308
9.1.7 SSL握手協定層 310
9.2 C/C++密碼庫OpenSSL 313
9.2.1 OpenSSL源碼模組結構 314
9.2.2 OpenSSL加密庫調用方式 314
9.2.3 OpenSSL支持的對稱加密算法 315
9.2.4 OpenSSL支持的非對稱加密算法 316
9.2.5 OpenSSL支持的信息摘要算法 316
9.2.6 OpenSSL密鑰和證書管理 316
9.2.7 面向對象與OpenSSL 316
9.2.8 BIO接口 318
9.2.9 EVP接口 319
9.3 在Windows下編譯OpenSSL 1.0.2m 319
9.3.1 安裝ActivePerl解釋器 320
9.3.2 不指定生成目錄的32位Release版本動態庫的編譯 321
9.4 OpenSSL中的SSL編程 328
9.5 SSL函式 329
9.5.1 初始化SSL算法庫:SSL_library_init 329
9.5.2 初始化SSL上下文環境變數:SSL_CTX_new 329
9.5.3 釋放SSL上下文環境變數:SSL_CTX_free 330
9.5.4 檔案形式設定SSL證書:SSL_CTX _use_certificate_file 330
9.5.5 結構體方式設定SSL證書:SSL_CTX_use_certificate 330
9.5.6 檔案形式設定SSL私鑰:SSL_CTX_use_PrivateKey_file 330
9.5.7 結構體方式設定SSL私鑰:SSL_CTX_use_PrivateKey 330
9.5.8 檢查SSL私鑰和證書是否匹配:SSL_CTX_check_private_key 331
9.5.9 創建SSL結構:SSL_new 331
9.5.10 釋放SSL套接字結構體:SSL_free 331
9.5.11 設定讀寫套接字:SSL_set_fd 331
9.5.12 設定唯讀套接字:SSL_set_rfd 331
9.5.13 設定只寫套接字:SSL_set_wfd 332
9.5.14 啟動TLS/SSL握手:SSL_connect 332
9.5.15 接受SSL連線:SSL_accept 332
9.5.16 獲取對方的X509證書:SSL_get_peer_certificate 332
9.5.17 向TLS/SSL連線寫數據:SSL_write 333
9.5.18 從TLS/SSL連線上讀取數據:SSL_read 333
9.6 準備SSL通信所需的證書 333
9.6.1 準備實驗環境 333
9.6.2 熟悉CA環境 334
9.6.3 創建所需要的檔案 334
9.6.4 創建(CA)根證書 334
9.6.5 生成伺服器端的證書請求檔案 335
9.6.6 簽發伺服器端證書 336
9.6.7 生成客戶端的證書請求檔案 337
9.6.8 簽發客戶端證書 338
9.7 實戰SSL網路編程 338
第10章 IPv6網路滲透測試 347
10.1 IPv4的現狀和不足 347
10.1.1 地址空間、地址方案與選路的問題 348
10.1.2 網路管理與配置的問題 352
10.1.3 服務類型問題 353
10.1.4 IP選項問題 353
10.1.5 IPv4的安全性問題 354
10.1.6 是增加補丁還是徹底升級改進 354
10.2 IPv6概述 355
10.2.1 IPv6的特點 355
10.2.2 IPv6地址表示方法 356
10.2.3 IPv6 前綴 357
10.2.4 IPv6地址的類型 357
10.2.5 IPv6數據報格式 361
10.2.6 IPv6的安全問題 365
10.2.7 IPv6的發展 366
10.2.8 ICMPv6分析 366
10.2.9 鄰居發現協定 367
10.2.10 多播偵聽發現 368
10.2.11 IPv6地址自動配置 369
10.2.12 IPv6的過渡共存機制 369
10.2.13 隧道機制 370
10.2.14 基於網路滲透測試的脆弱性分析方法 370
10.3 基於IPv6的 Socket網路編程技術 371
10.3.1 地址表示 371
10.3.2 IPv6的Socket API函式 372
10.3.3 在IPv6下編寫應用程式的注意事項 372
10.3.4 實戰IPv6 373
10.4 IPv6自身安全問題 379
10.4.1 IPv6自身存在的安全問題 380
10.4.2 選路頭引起的安全問題 380
10.4.3 誤用站點多播地址導致的安全問題 381
10.4.4 ICMPv6和多播地址結合使用存在的安全問題 381
10.4.5 在ICMPv6錯誤訊息中偽造錯誤數據引起的安全問題 382
10.4.6 偽造鏈路前綴引起的拒絕服務 382
10.4.7 任播流量識別和安全 382
10.4.8 IPv6私密性擴展和分散式拒絕服務攻擊 382
10.4.9 無狀態地址自動配置的安全隱患 382
10.4.10 分片相關的拒絕服務攻擊 383
10.4.11 IPv6鄰居發現協定存在的安全隱患 383
10.4.12 偽造地址配置前綴 384
10.4.13 參數欺騙 384
10.5 IPv6 過渡期間存在的安全問題 384
10.5.1 雙棧環境中的安全問題 385
10.5.2 自動隧道終點帶來的安全問題 386
10.5.3 6to4隧道終點引入的IP位址欺騙問題 386
10.5.4 ISATAP隧道引入的分散式拒絕服務問題 387
10.5.5 在自動隧道中利用選路頭產生反射攻擊 387
10.5.6 依託6to4機制攻擊IPv6網路中的主機 388
10.6 IPv6網路滲透測試存在的問題 389
10.6.1 網路掃描 389
10.6.2 非法訪問 389
10.6.3 偽造報頭和數據分片 390
10.6.4 網路層和套用層欺騙 390
10.6.5 ARP和DHCP 390
10.6.6 Smurf攻擊在IPv6網路中的影響 391
10.6.7 嗅探 391
10.6.8 欺詐設備 391
10.6.9 中間人攻擊 391
10.7 IPv6網路掃描技術研究 391
10.7.1 減少定址空間 392
10.7.2 針對節點和路由器必需的IPv6地址 392
10.7.3 ping網段中的組播公共地址 392
10.7.4 利用無狀態地址自動配置的漏洞獲得線上主機IP位址 393
10.7.5 掃描隧道端點地址 393
10.7.6 IPv6網路掃描方法 393
10.8 IPv6鄰居發現機制脆弱性分析 394
10.8.1 偽造路由公告訊息 394
10.8.2 重複地址引入的安全問題 395
10.8.3 路由器公告報文中的當前跳數限制欄位問題 396
第11章 網路安全抓包WinPcap編程 397
11.1 WinPcap的歷史 397
11.2 WinPcap的功能 397
11.3 WinPcap的套用領域 398
11.4 WinPcap不能做什麼 399
11.5 WinPcap的組成結構 399
11.6 WinPcap核心層NPF 400
11.7 WinPcap的數據結構和主要功能函式 401
11.7.1 網路接口地址 401
11.7.2 數據報頭的格式 401
11.7.3 PCAP檔案格式 402
11.7.4 獲取網卡列表:pcap_findalldevs 402
11.7.5 釋放空間:pcap_freealldevs 404
11.7.6 打開網路設備:pcap_open_live 404
11.7.7 捕獲數據包:pcap_loop 404
11.7.8 捕獲數據包:pcap_dispatch 405
11.7.9 捕獲數據包:pcap_next_ex 406
11.8 搭建WinPcap的開發環境 406
11.8.1 WinPcap通信庫的安裝 406
11.8.2 準備開發包 408
11.8.3 第一個WinPcap應用程式 409
11.8.4 捕獲訪問Web站點的數據包 410