《C#灰帽子:设计安全测试工具》是由机械工业出版社出版的一本关于C#方面的书籍,作者是布兰德·佩里,王自亮,侯敬,主要介绍了关于C#、灰帽子、设计安全、测试工具方面的知识内容,目前在C#类书籍综合评分为:9.8分。
书籍介绍
《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