C#灰帽子:设计安全测试工具
目 录内容简介
目 录内容简介
本书介绍如何用C#核心库进行漏洞扫描、恶意软件自动分析和安全事件响应等,以及如何编写安全实用工具可应用于Mac、Linux、移动平台等。例如,编写模糊分析器以便用HTTP和XML库扫描SQL和XSS注入,在Metasploit中生成代码来创建跨平台和跨架构的工具,用Nessus、OpenVAS和sqlmap自动化扫描漏洞并利用SQL漏洞,等等。使用C#工具库和本书提供的工具可简化日常安全工作。
目 录内容简介
目 录
译者序
序
前 言
第1章 C#基础知识速成 1
1.1 选择IDE 1
1.2 一个简单的例子 2
1.3 类和接口 3
1.3.1 创建一个类 4
1.3.2 创建接口 4
1.3.3 从抽象类中子类化并实现接口 5
1.3.4 将所有内容与Main()方法结合到一起 7
1.3.5 运行Main()方法 8
1.4 匿名方法 9
1.4.1 在方法中使用委托 9
1.4.2 更新Firefighter类 10
1.4.3 创建可选参数 10
1.4.4 更新Main()方法 11
1.4.5 运行更新的Main()方法 12
1.5 与本地库整合 12
1.6 本章小结 14
第2章 模糊测试和漏洞利用技术 15
2.1 设置虚拟机 16
2.1.1 添加仅主机虚拟网络 16
2.1.2 创建虚拟机 16
2.1.3 从BadStore ISO启动虚拟机 17
2.2 SQL注入 19
2.3 跨站脚本攻击 20
2.4 使用基于突变的模糊测试工具对GET参数进行模糊测试 22
2.4.1 污染参数和测试漏洞 23
2.4.2 构造HTTP请求 23
2.4.3 测试模糊测试的代码 25
2.5 对POST请求进行模糊测试 25
2.5.1 编写一个对POST请求进行模糊测试的工具 28
2.5.2 开始模糊测试 29
2.5.3 对参数进行模糊测试 30
2.6 对JSON进行模糊测试 32
2.6.1 设置存在漏洞的程序 32
2.6.2 捕获易受攻击的JSON请求 33
2.6.3 编写对JSON进行模糊测试的工具 34
2.6.4 测试对JSON进行模糊测试的工具 39
2.7 利用SQL注入 40
2.7.1 手工进行基于UNION的注入 40
2.7.2 编程进行基于UNION的注入 42
2.7.3 利用基于布尔的SQL注入 45
2.8 本章小结 53
第3章 对SOAP终端进行模糊测试 55
3.1 设置易受攻击的终端 55
3.2 解析WSDL 56
3.2.1 为WSDL文档编写一个类 57
3.2.2 编写初始解析方法 58
3.2.3 为SOAP类型和参数编写一个类 60
3.2.4 编写一个SoapMessage类来定义发送的数据 62
3.2.5 为消息部分实现一个类 63
3.2.6 使用SoapPortType类定义端口操作 64
3.2.7 为端口操作实现一个类 65
3.2.8 使用SOAP绑定定义协议 66
3.2.9 编辑操作子节点的列表 68
3.2.10 在端口上寻找SOAP服务 68
3.3 自动化执行模糊测试 70
3.3.1 对不同的SOAP服务进行模糊测试 71
3.3.2 对SOAP HTTP POST端口进行模糊测试 75
3.3.3 对SOAP XML端口进行模糊测试 78
3.3.4 运行模糊测试工具 82
3.4 本章小结 83
第4章 编写有效载荷 84
4.1 编写回连的有效载荷 84
4.1.1 网络流 85
4.1.2 运行命令 86
4.1.3 运行有效载荷 88
4.2 绑定有效载荷 88
4.2.1 接收数据,运行命令,返回输出 89
4.2.2 从流中执行命令 90
4.3 使用UDP攻击网络 91
4.3.1 运行在目标机器上的代码 92
4.3.2 运行在攻击者机器上的代码 95
4.4 从C#中运行x86和x86-64 Metasploit有效载荷 97
4.4.1 安装Metasploit 97
4.4.2 生成有效载荷 99
4.4.3 执行本机Windows有效载荷作为非托管代码 100
4.4.4 执行本机Linux有效载荷 102
4.5 本章小结 106
第5章 自动化运行Nessus 107
5.1 REST和Nessus API 107
5.2 NessusSession类 108
5.2.1 发送HTTP请求 109
5.2.2 注销和清理 111
5.2.3 测试NessusSession类 112
5.3 NessusManager类 112
5.4 启动Nessus扫描 114
5.5 本章小结 117
第6章 自动化运行Nexpose 118
6.1 安装Nexpose 118
6.1.1 激活与测试 120
6.1.2 一些Nexpose语法 121
6.2 NexposeSession类 121
6.2.1 ExecuteCommand()方法 123
6.2.2 注销及释放会话 126
6.2.3 获取API版本 127
6.2.4 调用Nexpose API 127
6.3 NexposeManager类 128
6.4 自动发起漏洞扫描 130
6.4.1 创建一个拥有资产的站点 130
6.4.2 启动扫描 131
6.5 创建PDF格式站点扫描报告及删除站点 132
6.6 汇总 133
6.6.1 开始扫描 133
6.6.2 生成扫描报告并删除站点 134
6.6.3 执行自动化扫描程序 134
6.7 本章小结 135
第7章 自动化运行OpenVAS 136
7.1 安装OpenVAS 136
7.2 构建类 137
7.3 OpenVASSession类 137
7.3.1 OpenVAS服务器认证 138
7.3.2 创建执行OpenVAS命令的方法 139
7.3.3 读取服务器消息 140
7.3.4 建立发送/接收命令的TCP流 141
7.3.5 证书有效性及碎片回收 141
7.3.6 获取OpenVAS版本 142
7.4 OpenVASManager类 143
7.4.1 获取扫描配置并创建目标 144
7.4.2 封装自动化技术 148
7.4.3 运行自动化操作 149
7.5 本章小结 149
第8章 自动化运行Cuckoo Sandbox 150
8.1 安装Cuckoo Sandbox 150
8.2 手动运行Cuckoo Sandbox API 151
8.2.1 启动API 151
8.2.2 检查Cuckoo的状态 152
8.3 创建CuckooSession类 153
8.3.1 编写ExecuteCommand()方法来处理HTTP请求 154
8.3.2 用GetMultipartFormData()方法创建分段HTTP数据 156
8.3.3 用FileParameter类处理文件数据 158
8.3.4 测试CuckooSession及支持类 159
8.4 编写CuckooManger类 160
8.4.1 编写CreateTask()方法 161
8.4.2 任务细节及报告方法 162
8.4.3 创建任务抽象类 163
8.4.4 排序并创建不同的类类型 165
8.5 组合在一起 167
8.6 测试应用程序 168
8.7 本章小结 170
第9章 自动化运行sqlmap 171
9.1 运行sqlmap 172
9.1.1 sqlmap REST API 173
9.1.2 用curl测试sqlmap API 174
9.2 创建一个用于sqlmap的会话 177
9.2.1 创建执行GET请求的方法 179
9.2.2 执行POST请求 179
9.2.3 测试Session类 180
9.3 SqlmapManager类 182
9.3.1 列出sqlmap选项 184
9.3.2 编写执行扫描的方法 185
9.3.3 新的Main()方法 187
9.4 扫描报告 188
9.5 自动化执行一个完整的sqlmap扫描 189
9.6 将sqlmap和SOAP漏洞测试程序集成在一起 191
9.6.1 在SOAP漏洞测试程序中增加sqlmap GET请求支持 191
9.6.2 增加sqlmap POST请求支持 192
9.6.3 调用新编写的方法 194
9.7 本章小结 196
第10章 自动化运行ClamAV 197
10.1 安装ClamAV软件 197
10.2 ClamAV软件本地库与clamd网络守护进程 199
10.3 通过ClamAV软件本地库自动执行 199
10.3.1 创建支持的枚举类型和类 199
10.3.2 调用ClamAV软件的本地库函数 202
10.3.3 编译ClamAV软件引擎 203
10.3.4 扫描文件 205
10.3.5 清理收尾 206
10.3.6 通过扫描EICAR测试文件来测试程序 207
10.4 通过clamd守护进程自动化执行 208
10.4.1 安装clamd守护进程 209
10.4.2 启动clamd守护进程 209
10.4.3 创建clamd进程会话类 210
10.4.4 创建clamd进程管理器类 211
10.4.5 测试clamd进程 212
10.5 本章小结 214
第11章 自动化运行Metasploit 215
11.1 运行RPC服务器 215
11.2 安装Metasploitable系统 217
11.3 获取MSGPACK库 218
11.3.1 为MonoDevelop环境安装NuGet软件包管理器 218
11.3.2 安装MSGPACK库 219
11.3.3 引用MSGPACK库 220
11.4 编写MetasploitSession类 221
11.4.1 为HTTP请求以及与MSGPACK库进行交互创建Execute()方法 222
11.4.2 转换MSGPACK库的响应数据 223
11.5 测试会话类 225
11.6 编写MetasploitManager类 226
11.7 整合代码模块 228
11.7.1 运行漏洞利用示例 229
11.7.2 与命令行进行交互 230
11.7.3 连接得到命令行 231
11.8 本章小结 231
第12章 自动化运行Arachni 233
12.1 安装Arachni软件 233
12.2 Arachni软件的REST API函数 234
12.2.1 创建ArachniHTTP-Session类 235
12.2.2 创建ArachniHTTP-Manager类 237
12.3 整合会话和管理器类 238
12.4 Arachni软件的RPC服务 239
12.4.1 手动运行RPC服务 239
12.4.2 ArachniRPCSession类 241
12.4.3 ExecuteCommand()的支持方法 243
12.4.4 ExecuteCommand()方法 245
12.4.5 ArachniRPCManager类 247
12.5 整合代码 248
12.6 本章小结 250
第13章 反编译和逆向分析托管程序集 252
13.1 反编译托管程序集 252
13.2 测试反编译器 255
13.3 使用monodis工具分析程序集 256
13.4 本章小结 259
第14章 读取离线注册表项 260
14.1 注册表项结构 260
14.2 获取注册表项 261
14.3 读取注册表项 263
14.3.1 创建注册表项文件的解析类 263
14.3.2 创建节点键类 264
14.3.3 创建值键的存储类 269
14.4 对库进行测试 270
14.5 导出启动密钥 271
14.5.1 GetBootKey()方法 271
14.5.2 GetValueKey()方法 273
14.5.3 GetNodeKey()方法 273
14.5.4 StringToByteArray()方法 274
14.5.5 获取启动密钥 275
14.5.6 验证启动密钥 275
14.6 本章小结 276
^ 收 起
译者序
序
前 言
第1章 C#基础知识速成 1
1.1 选择IDE 1
1.2 一个简单的例子 2
1.3 类和接口 3
1.3.1 创建一个类 4
1.3.2 创建接口 4
1.3.3 从抽象类中子类化并实现接口 5
1.3.4 将所有内容与Main()方法结合到一起 7
1.3.5 运行Main()方法 8
1.4 匿名方法 9
1.4.1 在方法中使用委托 9
1.4.2 更新Firefighter类 10
1.4.3 创建可选参数 10
1.4.4 更新Main()方法 11
1.4.5 运行更新的Main()方法 12
1.5 与本地库整合 12
1.6 本章小结 14
第2章 模糊测试和漏洞利用技术 15
2.1 设置虚拟机 16
2.1.1 添加仅主机虚拟网络 16
2.1.2 创建虚拟机 16
2.1.3 从BadStore ISO启动虚拟机 17
2.2 SQL注入 19
2.3 跨站脚本攻击 20
2.4 使用基于突变的模糊测试工具对GET参数进行模糊测试 22
2.4.1 污染参数和测试漏洞 23
2.4.2 构造HTTP请求 23
2.4.3 测试模糊测试的代码 25
2.5 对POST请求进行模糊测试 25
2.5.1 编写一个对POST请求进行模糊测试的工具 28
2.5.2 开始模糊测试 29
2.5.3 对参数进行模糊测试 30
2.6 对JSON进行模糊测试 32
2.6.1 设置存在漏洞的程序 32
2.6.2 捕获易受攻击的JSON请求 33
2.6.3 编写对JSON进行模糊测试的工具 34
2.6.4 测试对JSON进行模糊测试的工具 39
2.7 利用SQL注入 40
2.7.1 手工进行基于UNION的注入 40
2.7.2 编程进行基于UNION的注入 42
2.7.3 利用基于布尔的SQL注入 45
2.8 本章小结 53
第3章 对SOAP终端进行模糊测试 55
3.1 设置易受攻击的终端 55
3.2 解析WSDL 56
3.2.1 为WSDL文档编写一个类 57
3.2.2 编写初始解析方法 58
3.2.3 为SOAP类型和参数编写一个类 60
3.2.4 编写一个SoapMessage类来定义发送的数据 62
3.2.5 为消息部分实现一个类 63
3.2.6 使用SoapPortType类定义端口操作 64
3.2.7 为端口操作实现一个类 65
3.2.8 使用SOAP绑定定义协议 66
3.2.9 编辑操作子节点的列表 68
3.2.10 在端口上寻找SOAP服务 68
3.3 自动化执行模糊测试 70
3.3.1 对不同的SOAP服务进行模糊测试 71
3.3.2 对SOAP HTTP POST端口进行模糊测试 75
3.3.3 对SOAP XML端口进行模糊测试 78
3.3.4 运行模糊测试工具 82
3.4 本章小结 83
第4章 编写有效载荷 84
4.1 编写回连的有效载荷 84
4.1.1 网络流 85
4.1.2 运行命令 86
4.1.3 运行有效载荷 88
4.2 绑定有效载荷 88
4.2.1 接收数据,运行命令,返回输出 89
4.2.2 从流中执行命令 90
4.3 使用UDP攻击网络 91
4.3.1 运行在目标机器上的代码 92
4.3.2 运行在攻击者机器上的代码 95
4.4 从C#中运行x86和x86-64 Metasploit有效载荷 97
4.4.1 安装Metasploit 97
4.4.2 生成有效载荷 99
4.4.3 执行本机Windows有效载荷作为非托管代码 100
4.4.4 执行本机Linux有效载荷 102
4.5 本章小结 106
第5章 自动化运行Nessus 107
5.1 REST和Nessus API 107
5.2 NessusSession类 108
5.2.1 发送HTTP请求 109
5.2.2 注销和清理 111
5.2.3 测试NessusSession类 112
5.3 NessusManager类 112
5.4 启动Nessus扫描 114
5.5 本章小结 117
第6章 自动化运行Nexpose 118
6.1 安装Nexpose 118
6.1.1 激活与测试 120
6.1.2 一些Nexpose语法 121
6.2 NexposeSession类 121
6.2.1 ExecuteCommand()方法 123
6.2.2 注销及释放会话 126
6.2.3 获取API版本 127
6.2.4 调用Nexpose API 127
6.3 NexposeManager类 128
6.4 自动发起漏洞扫描 130
6.4.1 创建一个拥有资产的站点 130
6.4.2 启动扫描 131
6.5 创建PDF格式站点扫描报告及删除站点 132
6.6 汇总 133
6.6.1 开始扫描 133
6.6.2 生成扫描报告并删除站点 134
6.6.3 执行自动化扫描程序 134
6.7 本章小结 135
第7章 自动化运行OpenVAS 136
7.1 安装OpenVAS 136
7.2 构建类 137
7.3 OpenVASSession类 137
7.3.1 OpenVAS服务器认证 138
7.3.2 创建执行OpenVAS命令的方法 139
7.3.3 读取服务器消息 140
7.3.4 建立发送/接收命令的TCP流 141
7.3.5 证书有效性及碎片回收 141
7.3.6 获取OpenVAS版本 142
7.4 OpenVASManager类 143
7.4.1 获取扫描配置并创建目标 144
7.4.2 封装自动化技术 148
7.4.3 运行自动化操作 149
7.5 本章小结 149
第8章 自动化运行Cuckoo Sandbox 150
8.1 安装Cuckoo Sandbox 150
8.2 手动运行Cuckoo Sandbox API 151
8.2.1 启动API 151
8.2.2 检查Cuckoo的状态 152
8.3 创建CuckooSession类 153
8.3.1 编写ExecuteCommand()方法来处理HTTP请求 154
8.3.2 用GetMultipartFormData()方法创建分段HTTP数据 156
8.3.3 用FileParameter类处理文件数据 158
8.3.4 测试CuckooSession及支持类 159
8.4 编写CuckooManger类 160
8.4.1 编写CreateTask()方法 161
8.4.2 任务细节及报告方法 162
8.4.3 创建任务抽象类 163
8.4.4 排序并创建不同的类类型 165
8.5 组合在一起 167
8.6 测试应用程序 168
8.7 本章小结 170
第9章 自动化运行sqlmap 171
9.1 运行sqlmap 172
9.1.1 sqlmap REST API 173
9.1.2 用curl测试sqlmap API 174
9.2 创建一个用于sqlmap的会话 177
9.2.1 创建执行GET请求的方法 179
9.2.2 执行POST请求 179
9.2.3 测试Session类 180
9.3 SqlmapManager类 182
9.3.1 列出sqlmap选项 184
9.3.2 编写执行扫描的方法 185
9.3.3 新的Main()方法 187
9.4 扫描报告 188
9.5 自动化执行一个完整的sqlmap扫描 189
9.6 将sqlmap和SOAP漏洞测试程序集成在一起 191
9.6.1 在SOAP漏洞测试程序中增加sqlmap GET请求支持 191
9.6.2 增加sqlmap POST请求支持 192
9.6.3 调用新编写的方法 194
9.7 本章小结 196
第10章 自动化运行ClamAV 197
10.1 安装ClamAV软件 197
10.2 ClamAV软件本地库与clamd网络守护进程 199
10.3 通过ClamAV软件本地库自动执行 199
10.3.1 创建支持的枚举类型和类 199
10.3.2 调用ClamAV软件的本地库函数 202
10.3.3 编译ClamAV软件引擎 203
10.3.4 扫描文件 205
10.3.5 清理收尾 206
10.3.6 通过扫描EICAR测试文件来测试程序 207
10.4 通过clamd守护进程自动化执行 208
10.4.1 安装clamd守护进程 209
10.4.2 启动clamd守护进程 209
10.4.3 创建clamd进程会话类 210
10.4.4 创建clamd进程管理器类 211
10.4.5 测试clamd进程 212
10.5 本章小结 214
第11章 自动化运行Metasploit 215
11.1 运行RPC服务器 215
11.2 安装Metasploitable系统 217
11.3 获取MSGPACK库 218
11.3.1 为MonoDevelop环境安装NuGet软件包管理器 218
11.3.2 安装MSGPACK库 219
11.3.3 引用MSGPACK库 220
11.4 编写MetasploitSession类 221
11.4.1 为HTTP请求以及与MSGPACK库进行交互创建Execute()方法 222
11.4.2 转换MSGPACK库的响应数据 223
11.5 测试会话类 225
11.6 编写MetasploitManager类 226
11.7 整合代码模块 228
11.7.1 运行漏洞利用示例 229
11.7.2 与命令行进行交互 230
11.7.3 连接得到命令行 231
11.8 本章小结 231
第12章 自动化运行Arachni 233
12.1 安装Arachni软件 233
12.2 Arachni软件的REST API函数 234
12.2.1 创建ArachniHTTP-Session类 235
12.2.2 创建ArachniHTTP-Manager类 237
12.3 整合会话和管理器类 238
12.4 Arachni软件的RPC服务 239
12.4.1 手动运行RPC服务 239
12.4.2 ArachniRPCSession类 241
12.4.3 ExecuteCommand()的支持方法 243
12.4.4 ExecuteCommand()方法 245
12.4.5 ArachniRPCManager类 247
12.5 整合代码 248
12.6 本章小结 250
第13章 反编译和逆向分析托管程序集 252
13.1 反编译托管程序集 252
13.2 测试反编译器 255
13.3 使用monodis工具分析程序集 256
13.4 本章小结 259
第14章 读取离线注册表项 260
14.1 注册表项结构 260
14.2 获取注册表项 261
14.3 读取注册表项 263
14.3.1 创建注册表项文件的解析类 263
14.3.2 创建节点键类 264
14.3.3 创建值键的存储类 269
14.4 对库进行测试 270
14.5 导出启动密钥 271
14.5.1 GetBootKey()方法 271
14.5.2 GetValueKey()方法 273
14.5.3 GetNodeKey()方法 273
14.5.4 StringToByteArray()方法 274
14.5.5 获取启动密钥 275
14.5.6 验证启动密钥 275
14.6 本章小结 276
^ 收 起
目 录内容简介
本书介绍如何用C#核心库进行漏洞扫描、恶意软件自动分析和安全事件响应等,以及如何编写安全实用工具可应用于Mac、Linux、移动平台等。例如,编写模糊分析器以便用HTTP和XML库扫描SQL和XSS注入,在Metasploit中生成代码来创建跨平台和跨架构的工具,用Nessus、OpenVAS和sqlmap自动化扫描漏洞并利用SQL漏洞,等等。使用C#工具库和本书提供的工具可简化日常安全工作。
比价列表