1、C#灰帽子:设计安全测试工具演讲人2025-11-11011 C#基础知识速成1 C#基础知识速成1.1 选择IDE1.2 一个简单的例子1.3 类和接口1.6 本章小结1.5 与本地库整合1.4 匿名方法1.3 类和接口1 C#基础知识速成1.3.1 创建一个类1.3.2 创建接口1.3.5 运行Main()方法1.3.3 从抽象类中子类化并实现接口1.3.4 将所有内容与Main()方法结合到一起1 C#基础知识速成1.4 匿名方法011.4.1 在方法中使用委托021.4.2 更新Firefighter类031.4.3 创建可选参数041.4.4 更新Main()方法051.4.5 运行
2、更新的Main()方法022 模糊测试和漏洞利用技术2 模糊测试和漏洞利用技术2.1 设置虚拟机2.2 SQL注入2.3 跨站脚本攻击2.4 使用基于突变的模糊测试工具对GET参数进行模糊测试2.5 对POST请求进行模糊测试2.6 对JSON进行模糊测试2 模糊测试和漏洞利用技术2.7 利用SQL注入2.8 本章小结2 模糊测试和漏洞利用技术2.1 设置虚拟机CBA2.1.1 添加仅主机虚拟网络2.1.2 创建虚拟机2.1.3 从BadStore ISO启动虚拟机2.4 使用基于突变的模糊测试工具对GET参数进行模糊测试2 模糊测试和漏洞利用技术2.4.1 污染参数和测试漏洞2.4.2 构造
3、HTTP请求2.4.3 测试模糊测试的代码2 模糊测试和漏洞利用技术2.5 对POST请求进行模糊测试2.5.2 开始模糊测试2.5.1 编写一个对POST请求进行模糊测试的工具2.5.3 对参数进行模糊测试2 模糊测试和漏洞利用技术2.6 对JSON进行模糊测试12.6.1 设置存在漏洞的程序22.6.2 捕获易受攻击的JSON请求32.6.3 编写对JSON进行模糊测试的工具42.6.4 测试对JSON进行模糊测试的工具2 模糊测试和漏洞利用技术2.7 利用SQL注入CBA2.7.1 手工进行基于UNION的注入2.7.2 编程进行基于UNION的注入2.7.3 利用基于布尔的SQL注入0
4、33 对SOAP终端进行模糊测试3 对SOAP终端进行模糊测试3.1 设置易受攻击的终端3.2 解析WSDL3.3 自动化执行模糊测试3.4 本章小结DCABLOGOM.94275.CN3 对SOAP终端进行模糊测试3.2 解析WSDL13.2.1 为WSDL文档编写一个类33.2.3 为SOAP类型和参数编写一个类53.2.5 为消息部分实现一个类23.2.2 编写初始解析方法43.2.4 编写一个SoapMessage类来定义发送的数据63.2.6 使用SoapPortType类定义端口操作3 对SOAP终端进行模糊测试3.2 解析WSDL3.2.7 为端口操作实现一个类3.2.9 编辑操
5、作子节点的列表3.2.10 在端口上寻找SOAP服务3.2.8 使用SOAP绑定定义协议3 对SOAP终端进行模糊测试3.3 自动化执行模糊测试010203043.3.1 对不同的SOAP服务进行模糊测试3.3.2 对SOAP HTTP POST端口进行模糊测试3.3.3 对SOAP XML端口进行模糊测试3.3.4 运行模糊测试工具044 编写有效载荷4 编写有效载荷010203044.1 编写回连的有效载荷4.2 绑定有效载荷4.3 使用UDP攻击网络4.4 从C#中运行x86和x86-64Metasploit有效载荷054.5 本章小结LOGOM.94275.CN4 编写有效载荷4.1
6、编写回连的有效载荷4.1.1 网络流014.1.3 运行有效载荷034.1.2 运行命令024.2 绑定有效载荷4 编写有效载荷4.2.2 从流中执行命令4.2.1 接收数据,运行命令,返回输出4 编写有效载荷4.3 使用UDP攻击网络A4.3.1 运行在目标机器上的代码4.3.2 运行在攻击者机器上的代码B4 编写有效载荷4.4 从C#中运行x86和x86-64Metasploit有效载荷4.4.2 生成有效载荷02044.4.4 执行本机Linux有效载荷4.4.1 安装Metasploit034.4.3 执行本机Windows有效载荷作为非托管代码01055 自动化运行Nessus5 自
7、动化运行Nessus5.1 REST和Nessus API01 5.2 N e s s u s S e s s i o n类025.2.1 发送HTTP请求5.2.2 注销和清理5.2.3 测试NessusSession类5.4 启动Nessus扫描04 5.5 本章小结05 5.3 N e s s u s M a n a ge r 类03 066 自动化运行Nexpose6 自动化运行Nexpose6.1 安装Nexpose6.1.1 激活与测试6.1.2 一些Nexpose语法6.2 NexposeSession类6.2.1 ExecuteCommand()方法MONO中的TLS20146
8、.2.2 注销及释放会话 20156.2.3 获取API版本 20166.2.4 调用Nexpose API 20176 自动化运行Nexpose6.3 NexposeManager类6.4 自动发起漏洞扫描6 自动化运行Nexpose6.4.1 创建一个拥有资产的站点6.4.2 启动扫描6 自动化运行Nexpose6.5 创建PDF格式站点扫描报告及删除站点6 自动化运行Nexpose6.6 汇总6.6.2 生成扫描报告并删除站点6.6.3 执行自动化扫描程序6.6.1 开始扫描6 自动化运行Nexpose6.7 本章小结077 自动化运行OpenVAS7 自动化运行OpenVAS7.1 安
9、装OpenVAS7.2 构建类7.5 本章小结7.4 OpenVASManager类7.3 OpenVASSession类7.3 OpenVASSession类7 自动化运行OpenVASAEDFBC7.3.2 创建执行OpenVAS命令的方法7.3.3 读取服务器消息7.3.5 证书有效性及碎片回收7.3.4 建立发送/接收命令的TCP流7.3.6 获取OpenVAS版本7.3.1 OpenVAS服务器认证7.4 OpenVASManager类7 自动化运行OpenVAS7.4.2 封装自动化技术7.4.1 获取扫描配置并创建目标7.4.3 运行自动化操作088 自动化运行Cuckoo Sa
10、ndbox8 自动化运行Cuckoo Sandbox18.1 安装Cuckoo Sandbox28.2 手动运行Cuckoo Sandbox API38.3 创建CuckooSession类48.4 编写CuckooManger类58.5 组合在一起68.6 测试应用程序8 自动化运行Cuckoo Sandbox8.7 本章小结LOGOM.94275.CN8 自动化运行Cuckoo Sandbox8.2 手动运行Cuckoo Sandbox API8.2.1 启动API8.2.2 检查Cuckoo的状态8.3 创建CuckooSession类8 自动化运行Cuckoo Sandbox8.3.1
11、 编写ExecuteCommand()方法来处理HTTP请求8.3.2 用GetMultipartFormData()方法创建分段HTTP数据8.3.3 用FileParameter类处理文件数据8.3.4 测试CuckooSession及支持类8 自动化运行Cuckoo Sandbox8.4 编写CuckooManger类8.4.1 编写CreateTask()方法8.4.2 任务细节及报告方法8.4.3 创建任务抽象类8.4.4 排序并创建不同的类类型099 自动化运行sqlmap9 自动化运行sqlmapAEDFBC9.2 创建一个用于sqlmap的会话9.3 SqlmapManager
12、类9.5 自动化执行一个完整的sqlmap扫描9.4 扫描报告9.6 将sqlmap和SOAP漏洞测试程序集成在一起9.1 运行sqlmap9 自动化运行sqlmap9.7 本章小结LOGOM.94275.CN9 自动化运行sqlmap9.1 运行sqlmapA9.1.1 sqlmap REST API9.1.2 用curl测试sqlmap APIB9 自动化运行sqlmap9.2 创建一个用于sqlmap的会话9.2.3 测试Session类9.2.2 执行POST请求9.2.1 创建执行GET请求的方法9.3 SqlmapManager类9 自动化运行sqlmap9.3.2 编写执行扫描的
13、方法9.3.1 列出sqlmap选项9.3.3 新的Main()方法9 自动化运行sqlmap9.6 将sqlmap和SOAP漏洞测试程序集成在一起9.6.1 在SOAP漏洞测试程序中增加sqlmap GET请求支持9.6.2 增加sqlmap POST请求支持01029.6.3 调用新编写的方法031010 自动化运行ClamAV10 自动化运行ClamAV10.1 安装ClamAV软件10.2 ClamAV软件本地库与clamd网络守护进程10.5 本章小结10.3 通过ClamAV软件本地库自动执行10.4 通过clamd守护进程自动化执行LOGOM.94275.CN10 自动化运行Cl
14、amAV10.3 通过ClamAV软件本地库自动执行10.3.1 创建支持的枚举类型和类0110.3.3 编译ClamAV软件引擎0310.3.5 清理收尾0510.3.2 调用ClamAV软件的本地库函数0210.3.4 扫描文件0410.3.6 通过扫描EICAR测试文件来测试程序0610 自动化运行ClamAV10.4 通过clamd守护进程自动化执行10.4.1 安装clamd守护进程0110.4.2 启动clamd守护进程0210.4.3 创建clamd进程会话类0310.4.4 创建clamd进程管理器类0410.4.5 测试clamd进程051111 自动化运行Metasploi
15、t11 自动化运行Metasploit0111.1 运行RPC服务器0211.2 安装Metasploitable系统0311.3 获取MSGPACK库0411.4 编写MetasploitSession类0511.5 测试会话类0611.6 编写MetasploitManager类11 自动化运行Metasploit11.7 整合代码模块11.8 本章小结LOGOM.94275.CN11 自动化运行Metasploit11.3 获取MSGPACK库01020311.3.1 为MonoDevelop环境安装NuGet软件包管理器11.3.2 安装MSGPACK库11.3.3 引用MSGPACK
16、库11 自动化运行Metasploit11.4 编写MetasploitSession类0111.4.1 为HTTP请求以及与MSGPACK库进行交互创建Execute()方法0211.4.2 转换MSGPACK库的响应数据11 自动化运行Metasploit11.7 整合代码模块11.7.2 与命令行进行交互11.7.3 连接得到命令行11.7.1 运行漏洞利用示例1212 自动化运行Arachni12 自动化运行Arachni12.2 Arachni软件的REST API函数12.4 Arachni软件的RPC服务12.6 本章小结12.1 安装Arachni软件12.3 整合会话和管理器
17、类12.5 整合代码12 自动化运行Arachni12.2 Arachni软件的REST API函数12.2.1 创建ArachniHTTPSession类0112.2.2 创建ArachniHTTPManager类0212.4 Arachni软件的RPC服务12 自动化运行Arachni12.4.2 ArachniRPCSession类12.4.4 ExecuteCommand()方法12.4.1 手动运行RPC服务12.4.3 ExecuteCommand()的支持方法12.4.5 ArachniRPCManager类1313 反编译和逆向分析托管程序集13 反编译和逆向分析托管程序集AD
18、BC13.2 测试反编译器13.3 使用monodis工具分析程序集13.4 本章小结13.1 反编译托管程序集1414 读取离线注册表项14 读取离线注册表项14.1 注册表项结构14.2 获取注册表项14.3 读取注册表项14.6 本章小结14.5 导出启动密钥14.4 对库进行测试14.3 读取注册表项14 读取离线注册表项14.3.2 创建节点键类14.3.1 创建注册表项文件的解析类14.3.3 创建值键的存储类14.5 导出启动密钥14 读取离线注册表项14.5.2 GetValueKey()方法14.5.4 StringToByteArray()方法14.5.6 验证启动密钥14.5.1 GetBootKey()方法14.5.3 GetNodeKey()方法14.5.5 获取启动密钥感谢聆听