网络安全与抓包技术
网络基础知识与Burp
OSI七层模型和TCP/IP四层模型
在正式讲解抓包技术之前,先普及一下网络协议之间的关系。这是网络通信领域的基础和参考,对网络协议的设计和实现起到了重要的指导作用。
OSI七层模型与TCP/IP四层模型
OSI七层模型 | TCP/IP四层模型 |
---|---|
应用层(Application Layer) | 应用层(Application Layer) |
表示层(Presentation Layer) | - |
会话层(Session Layer) | - |
传输层(Transport Layer) | 传输层(Transport Layer) |
网络层(Network Layer) | 网络层(Network Layer) |
数据链路层(Data Link Layer) | 网络接口层(Network Interface Layer) |
物理层(Physical Layer) | - |
但是在实际工业界中,TCP/IP协议族更加广泛地被使用和实现,因为它是互联网的核心协议,几乎所有的互联网通信都基于TCP/IP协议。因此,TCP/IP协议族更加贴合实际应用和实际需求。
HTTP与HTTPS
HTTP和HTTPS都是位于TCP/IP模型应用层的协议。HTTP用于传输超文本,而HTTPS是在HTTP基础上添加了安全性的协议,通过SSL/TLS协议对通信进行加密和认证,保护数据的安全性和完整性。
HTTP/HTTPS在TCP/IP的层次
- HTTP协议位于TCP/IP模型的应用层,定义了客户端和服务器之间的通信规则和数据格式。
- HTTPS协议也位于TCP/IP模型的应用层,是HTTP协议的安全版本,通过SSL/TLS协议对通信进行加密和认证。
HTTP与HTTPS的关系
- HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,基于客户端-服务器模型。
- HTTPS(HTTP Secure)是在HTTP协议基础上添加了安全性的协议。它使用SSL/TLS协议对通信进行加密和认证,确保数据的安全性和完整性。
HTTP和HTTPS之间的主要区别在于安全性。HTTP是明文传输的,数据在传输过程中容易被窃听和篡改。而HTTPS使用SSL/TLS协议对数据进行加密和认证,确保数据的安全性和完整性。在实际应用中,使用HTTP还是HTTPS取决于具体的需求和安全性要求。
HTTP(S)的规范
HTTP和HTTPS都是基于TCP/IP协议的应用层协议,用于在客户端和服务器之间进行数据传输和通信。
HTTP规范
- HTTP的规范主要由RFC 2616(HTTP/1.1规范)定义,随后更新为RFC 7230-7235。
- 请求报文:包含请求行、请求头部和请求主体(可选)。
- 请求行:包含请求方法、请求URL和HTTP版本。
- 请求头部:包含与请求相关的各种信息,如Host、User-Agent、Content-Type等。
- 请求主体(可选):包含请求发送的数据,如表单数据、JSON数据等。
- 响应报文:包含状态行、响应头部和响应主体(可选)。
- 状态行:包含响应状态码和状态描述。
- 响应头部:包含与响应相关的各种信息,如Content-Type、Content-Length等。
- 响应主体(可选):包含响应返回的数据,如HTML页面、JSON数据等。
- 请求方法:HTTP定义了多种请求方法,如GET、POST、PUT、DELETE等,用于指定请求的操作类型。
- 状态码:HTTP定义了一系列状态码,用于表示请求的处理结果。常见的状态码有200表示成功、404表示资源未找到、500表示服务器内部错误等。
- 头部字段:HTTP定义了各种头部字段,用于承载请求和响应的各种元数据。
- Cookie:HTTP通过Cookie机制来实现状态管理和会话跟踪。
- 缓存:HTTP通过缓存机制来减少网络传输和提高性能。
HTTPS规范
HTTPS是在HTTP协议基础上添加了安全性的协议,通过SSL/TLS协议对通信进行加密和认证。HTTPS规范主要由RFC 2818(HTTP Over TLS)定义,随后更新为RFC 7230-7235。HTTPS规范与HTTP规范的大部分内容相同,但在安全性方面有所扩展和修改。
HTTP(S)协议的请求方式
HTTP定义了多种请求方法(也称为HTTP动词),用于指定请求的操作类型。以下是常见的HTTP请求方法及其简单介绍:
- GET:用于从服务器获取资源,一般用于获取数据,不应该对服务器产生副作用。
- POST:用于向服务器提交数据,一般用于发送数据、更新资源或进行服务器端操作。
- PUT:用于向服务器上传新的资源或更新现有资源,用于替换服务器上指定位置的资源。
- DELETE:用于删除服务器上指定位置的资源。
- HEAD:类似于GET请求,但只获取响应头部信息,不返回响应体,常用于获取资源的元数据。
- OPTIONS:用于获取服务器支持的请求方法和可用选项,用于探测服务器的功能和配置。
HTTP(S)的状态码
HTTP(S)协议定义了一系列状态码(Status Code),用于表示请求的处理结果和服务器的响应状态。状态码由三位数字组成,分为五个类别,每个类别具有不同的含义。以下是常见的HTTP(S)状态码及其含义:
- 1xx - 信息性状态码(Informational)
- 100 Continue:服务器已接收到请求的初始部分,并且客户端应该继续发送剩余的请求。
- 101 Switching Protocols:服务器已理解并接受客户端的请求,将切换到不同的协议。
- 2xx - 成功状态码(Success)
- 200 OK:请求成功,服务器成功处理了请求。
- 201 Created:请求成功,并在服务器上创建了新的资源。
- 204 No Content:请求成功,但响应中不包含实体内容。
- 3xx - 重定向状态码(Redirection)
- 301 Moved Permanently:请求的资源已永久移动到新位置。
- 302 Found:请求的资源临时移动到不同的位置。
- 304 Not Modified:客户端的缓存副本是最新的,可以直接使用缓存的版本。
- 4xx - 客户端错误状态码(Client Error)
- 400 Bad Request:服务器无法理解客户端的请求,可能是请求语法错误或参数错误。
- 401 Unauthorized:请求要求身份验证,客户端需要提供有效的身份凭证。
- 404 Not Found:请求的资源不存在。
- 418 I’m a teapot:这个状态码并不是在正式的HTTP规范中定义的,而是在1998年的一个IETF(Internet Engineering Task Force)的愚人节玩笑中提出的。该状态码的背景是基于一个叫做"Hyper Text Coffee Pot Control Protocol"(HTCPCP)的玩笑协议。这个协议描述了如何通过网络来控制一台咖啡壶。在这个玩笑中,"I’m a teapot"状态码被定义为当服务器是一台咖啡壶时返回的响应。
- 5xx - 服务器错误状态码(Server Error)
- 500 Internal Server Error:服务器遇到了意外的错误,无法完成请求。
- 503 Service Unavailable:服务器当前无法处理请求,一般是由于过载或维护。
HTTP/HTTPS抓包的原理
HTTP/HTTPS抓包的原理是通过拦截网络通信流量,将请求和响应数据包进行捕获和分析。下面分别介绍HTTP抓包和HTTPS抓包的原理:
HTTP抓包的原理
- HTTP抓包工具(如Burp、Wireshark、Fiddler、Charles等)在客户端和服务器之间作为中间人,拦截HTTP请求和响应数据包。
- 抓包工具在客户端和服务器之间建立代理服务器或中间人代理,并配置客户端或系统的网络设置,使流量经过抓包工具。
- 捕获请求和响应:当客户端发送HTTP请求时,抓包工具会捕获请求数据包,并将其展示给用户。同样,抓包工具也会捕获服务器返回的HTTP响应数据包。
- 查看和分析:使用抓包工具,用户可以查看请求和响应的详细信息,包括请求头、响应头、请求体、响应体等,并进行分析和修改。
HTTPS抓包的原理
HTTPS抓包相对于HTTP抓包更加复杂,因为HTTPS使用SSL/TLS协议对通信进行加密和认证。
- 中间人代理:HTTPS抓包工具需要在客户端和服务器之间建立中间人代理,并生成自己的SSL证书。
- 伪装成服务器:客户端在进行HTTPS通信时,抓包工具会伪装成服务器,向客户端发送自己生成的SSL证书。
- 证书验证:客户端收到抓包工具的证书后,会验证证书的合法性。如果证书不是由可信的证书颁发机构签发,客户端会发出警告。
- 建立安全连接:如果用户选择信任抓包工具的证书,客户端和抓包工具之间会建立安全连接,抓包工具可以解密客户端和服务器之间的SSL流量。
- 解密并分析:抓包工具捕获解密后的HTTPS请求和响应数据包,并对其进行展示和分析,用户可以查看解密后的数据。
抓包工具首推之Burp Suite
Burp Suite是一款功能强大的网络安全测试工具,广泛用于渗透测试、漏洞挖掘和应用程序安全评估。它由多个模块组成,提供了丰富的功能和工具,使安全测试人员能够有效地发现和利用应用程序的漏洞。
Burp Suite的主要组成部分和功能
- Proxy代理:Burp Proxy是Burp Suite的核心组件,允许拦截、修改和分析HTTP/HTTPS请求和响应。它可以作为中间人代理,捕获流量并允许用户查看和修改请求、响应的内容,以便进行调试和漏洞挖掘。Burp Proxy还提供了各种高级功能,如拦截规则、自动化扫描、HTTP历史记录等。
- Scanner扫描器:Burp Scanner是自动化漏洞扫描工具,用于发现应用程序的安全漏洞。它通过对应用程序进行主动扫描,自动检测常见的漏洞类型,如跨站脚本攻击(XSS)、SQL注入、命令注入等。Burp Scanner可以生成详细的漏洞报告,帮助安全测试人员识别和修复潜在的安全风险。
- Spider爬虫:Burp Spider是一个Web应用程序爬虫,用于自动化地发现隐藏的页面和功能。它通过跟踪和模拟用户的行为,自动遍历和访问应用程序的不同路径和链接。Burp Spider可以帮助测试人员发现未经授权的访问、敏感信息泄露等问题。
- Intruder暴力破解器:Burp Intruder是一个强大的暴力破解和Fuzz测试工具,用于测试应用程序的鲁棒性和安全性。它可以自动化地发送大量的定制请求,对目标参数进行暴力破解、字典攻击、参数化Fuzz等。Burp Intruder可以帮助测试人员发现认证绕过、弱口令、输入验证问题等。
- Repeater重放器:Burp Repeater是一个交互式的工具,用于重放和修改请求,观察响应结果。它提供了一个可编辑的请求编辑器,可以手动修改请求参数和头部信息,并观察修改后的响应。Burp Repeater对于调试和测试特定请求非常有用。
为什么推荐Burp Suite
Burp Suite不仅功能强大,而且新版本自带了浏览器,方便初学者进行抓包操作。安装包和破解包可以通过GitHub搜索“Burp Suite Pro Loader & Keygen”获得,这个工具能够自动更新和下载最新的版本。破解原理后面有空的话我也可以抽出时间进行讲解。