×
暂无评论
图文详情
  • ISBN:9787302588245
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:356
  • 出版时间:2021-09-01
  • 条形码:9787302588245 ; 978-7-302-58824-5

本书特色

《Go黑帽子 渗透测试编程之道》探索了Go的“阴暗面”,Go是一种因为简单、高效和可靠而受到黑客推崇的流行编程语言。本书从安全从业者和黑客的角度出发,提供了一系列实用的策略,以帮助你使用Go的功能来测试系统、构建和自动化工具以满足你的需求,并提高你的进攻性安全技能。 我们将从Go的语法和原理的基本概述开始你的学习之旅,探索可用于工具开发的示例,包括HTTP、DNS和SMB等常见网络协议。然后,我们将深入研究渗透测试人员会使用的各种“招数”和会遇到的问题,解决诸如数据窃取、数据包侦探和漏洞利用开发之类的问题。在深入研究加密技术、攻击Microsoft Windows并实现隐写技术之前,我们将创建动态的、可插入的工具。

内容简介

学习内容: 如何开发用于你自己安全项目的高性能工具。 如何创建与远程API交互的可用工具。 如何抓取任意HTML数据。 如何使用Go的标准包net/http构建HTTP服务器。 如何编写自己的DNS服务器和代理。 如何使用DNS隧道建立一个C2通道以突破性网络。 如何创建漏洞模糊器(fuzzer)以发现应用程序的安全漏洞。 如何使用插件和扩展使产品可以面向未来。 如何构建RC2对称密钥暴力破解工具。 如何在(PNG)图像中植入数据。 准备好扩展你的安全工具库了吗? 那我们出发(Go)吧!

目录



第1 章 Go 语言基础1


1.1 设置开发环境 1


1.1.1 下载和安装Go 1


1.1.2 设置GOROOT 以定义二进制文件的位置 2


1.1.3 设置GOPATH 以确定Go工作区的位置 2


1.1.4 选择一个集成开发环境 3


1.1.5 常用的Go 工具命令 6


1.2 理解Go 的语法 9


1.2.1 数据类型10


1.2.2 控制结构13


1.2.3 并发15


1.2.4 错误处理17


1.2.5 处理结构化数据18


1.3 小结19


第2 章 TCP、扫描器和代理 21


2.1 理解TCP 的握手机制21


2.2 通过端口转发绕过防火墙22


2.3 编写一个TCP 扫描器23


2.3.1 测试端口可用性23


2.3.2 执行非并发扫描24


2.3.3 执行并发扫描26


2.4 构造TCP 代理31


2.4.1 使用io.Reader 和io.Writer 32


2.4.2 创建回显服务器 35


2.4.3 通过创建带缓冲的监听器来改进代码 37


2.4.4 代理一个TCP 客户端 39


2.4.5 复现Netcat 命令执行 41


2.5 小结 44


第3 章 HTTP 客户端以及与工具的远程交互 45


3.1 Go 的HTTP 基础知识 45


3.1.1 调用HTTP API 46


3.1.2 生成一个请求 47


3.1.3 使用结构化响应解析 48


3.2 构建与Shodan 交互的HTTP


客户端 51


3.2.1 回顾构建API 客户端的步骤 51


3.2.2 设计项目结构 52


3.2.3 清理API 调用 52


3.2.4 查询Shodan 订阅情况 53


3.2.5 创建一个客户端 58


3.3 与Metasploit 交互 59


3.3.1 配置环境 59


3.3.2 定义目标 61


3.3.3 获取有效令牌 62


3.3.4 定义请求和响应方法 63


3.3.5 创建配置结构体和RPC方法64


3.3.6 执行远程调用65


3.3.7 创建实用程序67


3.4 使用Bing Scraping 解析文档元数据69


3.4.1 配置环境和规划69


3.4.2 定义元数据包71


3.4.3 把数据映射到结构体72


3.4.4 使用Bing 搜索和接收文件.73


3.5 小结77


第4 章 HTTP 服务器、路由和中间件79


4.1 HTTP 服务器基础79


4.1.1 构建一个简单的服务器80


4.1.2 构建一个简单的路由器81


4.1.3 构建简单的中间件82


4.1.4 使用gorilla/mux 包进行路由84


4.1.5 使用negroni 包构建中间件.85


4.1.6 使用negroni 包添加身份验证88


4.1.7 使用模板生成HTML 响应.90


4.2 凭证收割92


4.3 使用WebSocket API 实现按键记录.96


4.4 多路命令与控制100


4.5 小结.104


第5 章 DNS 利用 105


5.1 编写DNS 客户端105


5.1.1 检索A 记录106


5.1.2 使用Msg 结构体处理应答.107


5.1.3 枚举子域.109


5.1.4 查询A 记录和CNAME记录110


5.1.5 工人函数113


5.1.6 使用bufio 包创建一个文本扫描器.114


5.1.7 收集和显示结果.115


5.2 编写DNS 服务器120


5.2.1 实验环境搭建和服务器介绍120


5.2.2 创建DNS 服务器和代理123


5.3 小结.132


第6 章 与SMB 和NTLM 交互.133


6.1 SMB 包133


6.2 理解SMB .134


6.2.1 理解SMB 安全令牌135


6.2.2 创建一个SMB 会话135


6.2.3 使用结构域的混合编码.136


6.2.4 了解元数据和引用字段.139


6.2.5 理解SMB 实现.140


6.3 使用SMB 包猜测密码147


6.4 通过pass-the-hash 技术重用密码.149


6.5 恢复NTLM 密码.151


6.5.1 计算散列值151


6.5.2 恢复NTLM 散列值152


6.6 小结.153


第7 章 滥用数据库和文件系统.155


7.1 使用Docker 设置数据库156


7.1.1 安装MongoDB 数据库并写入数据.156


7.1.2 安装PostgreSQL 和MySQL数据库并写入数据.158


7.1.3 安装Microsoft SQL Server数据库并写入数据.159


7.2 在Go 中连接和查询数据库 160


7.2.1 查询MongoDB 数据库 160


7.2.2 查询SQL 数据库 162


7.3 构建数据库矿工 163


7.3.1 实现一个MongoDB数据库矿工 166


7.3.2 实现一个MySQL数据库矿工 169


7.4 掠夺文件系统 172


7.5 小结 174


第8 章 原始数据包处理 175


8.1 配置环境 175


8.2 使用pcap 子包识别设备 176


8.3 实时捕获和结果过滤 177


8.4 嗅探和显示明文用户凭证 180


8.5 通过SYN 泛洪保护进行端口扫描 182


8.5.1 检查TCP 标志位 183


8.5.2 构建BPF 过滤器 183


8.5.3 编写端口扫描器 184


8.6 小结 187


第9 章 编写和移植利用代码 189


9.1 创建一个模糊测试器 189


9.1.1 缓冲区溢出模糊测试 190


9.1.2 SQL 注入模糊测试 193


9.2 将漏洞利用移植到Go 198


9.2.1 从Python 移植漏洞利用 199


9.2.2 从C 移植漏洞利用 202


9.3 在Go 中构建shellcode 215


9.3.1 C 转换 216


9.3.2 十六进制转换 216


9.3.3 num 转换 217


9.3.4 raw 转换 217


9.3.5 Base64 编码 218


9.3.6 一个关于汇编的注意事项.219


9.4 小结.219


第10 章 Go 插件和可扩展工具221


10.1 使用Go 的原生插件系统222


10.1.1 创建主程序.223


10.1.2 构建一个密码猜测插件226


10.1.3 运行扫描器.228


10.2 基于Lua 构建插件.229


10.2.1 创建head() HTTP 函数230


10.2.2 创建函数get() 231


10.2.3 向Lua VM 注册函数.233


10.2.4 编写函数main().233


10.2.5 创建插件脚本.234


10.2.6 测试Lua 插件.235


10.3 小结236


第11 章 针对密码学的攻击和实现.237


11.1 回顾基本密码学概念.237


11.2 理解标准的Crypto 库.238


11.3 探索散列.239


11.3.1 破解MD5 和SHA-512散列值.239


11.3.2 实现bcrypt241


11.4 验证消息.243


11.5 加密数据.245


11.5.1 对称密钥加密.245


11.5.2 非对称加密.248


11.6 暴力破解RC2.255


11.6.1 准备工作.256


11.6.2 生产工作.258


11.6.3 执行工作和解密数据.260


11.6.4 编写函数main() .261


11.6.5 运行程序.263


11.7 小结.264


第12 章 Windows 系统交互与分析 265


12.1 Windows API 的函数OpenProcess()265


12.2 unsafe.Pointer 和uintptr类型268


12.3 使用syscall 包执行进程注入270


12.3.1 定义Windows DLL并给变量赋值272


12.3.2 使用OpenProcess Windows API 获取进程令牌.273


12.3.3 使用VirtualAllocEx Windows API 操作内存.276


12.3.4 使用WriteProcessMemory Windows API 写入内存.276


12.3.5 使用GetProcessAddress Windows API 查找LoadLibraryA .277


12.3.6 使用CreateRemoteThread Windows API 执行恶意DLL.278


12.3.7 使用WaitforSingleObject Windows API 验证注入.279


12.3.8 使用VirtualFreeEx Windows API 进行清理.280


12.3.9 附加练习.281


12.4 可移植的可执行文件281


12.4.1 理解PE 文件格式282


12.4.2 编写一个PE 解析器282


12.4.3 附加练习.293


12.5 在Go 中使用C293


12.5.1 安装C Windows 工具链293


12.5.2 使用C 和Windows API创建一个消息框294


12.5.3 在C 程序中嵌入Go代码.295


12.6 小结.297


第13 章 使用隐写术隐藏数据.299


13.1 探索PNG 格式.299


13.1.1 文件头.300


13.1.2 块序列.300


13.2 读取图像字节数据.301


13.2.1 读取头数据.302


13.2.2 读取块序列.303


13.3 写入图像字节数据以植入载荷.306


13.3.1 查找块偏移量.306


13.3.2 使用方法ProcessImage()写入字节.306


13.4 使用XOR 编码和解码图像字节数据.311


13.5 小结.316


13.6 附加练习.316


第14 章 构建一个C2 远控木马.319


14.1 入门.319


14.1.1 安装用于定义gRPC API的Protocol Buffers .320


14.1.2 创建项目工作区.320


14.2 定义和构建gRPC API 321


14.3 创建服务器323


14.3.1 实现协议接口.323


14.3.2 编写函数main() .325


14.4 创建客户端植入程序.327


14.5 构建管理组件.329


14.6 运行RAT330


14.7 改进RAT330


14.7.1 加密通信.331


14.7.2 处理连接中断.331


14.7.3 注册植入程序 331


14.7.4 添加数据库持久 332


14.7.5 支持多个植入程序 332


14.7.6 添加植入程序功能 332


14.7.7 链接操作系统命令 333


14.7.8 增强植入程序的真实性并实践良好的运营安全333


14.7.9 添加ASCII Art .333


14.8 小结334


展开全部

作者简介

 Tom Steele、Chris Patten和Dan Kottmann分享了他们30多年的渗透测试和进攻性俺安全经验,并举办了多次Go培训和开发课程(有关详细信息,请参阅书中内容)。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航