网络安全基础——计算机基础三网络通信基础载体与协议URL\HTTP协议与报文之前学了传输层的相关协议现在学习一下应用层的相关知识。我们在访问百度时输入https://www.baidu.com这个是URL。URLUniform Resource Locator统一资源定位器是Internet上每一个网页都具有的唯一的名称标识是www的统一资源定位标志也就是我们常说的web地址简称“网址”。URL由协议、主机名域名、端口号、路径文件路径、查询参数查询数据、片段标识符锚点定位内容在首段、中间段还是末尾段组成其中端口号、查询参数、片段标识符可填可不填。URL的完整表示为-协议://主机名(:端口号)/路径(?查询参数)(#片段标识符)举一个具体的例子-https://www.example.com:8080/path/resource?param1value1param2value2#section1。前面我们讲了域名域名与URL有所不同域名是来定位某台服务器URL定位某台服务器上的具体资源URL包含域名域名就是主机名URL就是主机名/文件夹/文件网络资源的完整路径。访问网站时还需要一个协议——HTTP协议。HTTPHyper Text Transfer Protocol超文本传输协议是从web服务器传输超文本标记语言HTML到本地浏览器的协议。HTTP协议的原理是客户在浏览器输入URL访问网站浏览器发送HTTP请求给服务器告诉服务器“客户要访问XXX页面”服务器会将客户要访问的资源回传给浏览器服务器会给浏览器发送HTTP响应包含客户所需要的资源浏览器会将这些资源显示给客户。HTTP协议有以下特点简单灵活客户端请求服务器响应无状态协议协议不会保留之前请求的内容需要Cookie、Session等技术补充状态管理以明文方式传输数据。现在来学一下HTTP报文HTTP报文是浏览器与服务器沟通的书面语言所有传输的数据均遵循这样的格式。HTTP报文分为请求报文Request浏览器发给服务器的、响应报文Response服务器发给浏览器的。HTTP请求报文包含请求行、请求头部、请求数据。请求行包括请求方式、协议、版本。请求头部包括各种字段以及其值。请求数据是传输的数据。在GET方式中查询参数在请求行中在POST方式中查询参数在请求数据当中HTTP响应报文包含响应行、响应头部、响应数据。响应行包括协议、版本、状态码200-成功302-跳转到别的页面404-not found服务器找不到资源403-forbidden禁止访问、无权限访问500-服务器出错网络安全辅助工具与技术代理\VPN\BP代理即代理服务器是在客户端与服务器之间加入一个代理服务器。客户端先发送数据给代理服务器代理服务器再将数据发送给服务器。VPN即加密隧道技术是在客户端与服务器之间建立一个VPN加密隧道VPN服务器。客户端先把数据加密后发送给VPN服务器VPN服务器再将数据解密后发送给服务器。BP即BurpSuite渗透测试工具是在客户端与服务器之间的“合法代理服务器”可以拦截、查看、修改在客户端与服务器之间传输的HTTP/HTTPS流量多应用于漏洞挖掘与安全评估。现在进行一个BP拦截、修改流量的实验。注该实验是在合法靶场中使用目标靶场win Server2003中的一个购物网站网站http://192.168.96.131。HTTP默认端口为80实验过程访问该网站利用BP成功拦截关于付款金额的数据包并将付款金额修改成1成功完成该实验。安全通信协议与加密技术HTTPS协议\加密技术与中间人攻击HTTPS加密技术是针对HTTP协议明文传输的安全问题的可以这样表示HTTPSHTTP加密层。HTTP与HTTPS的区别HTTP明文传输HTTPS密文传输HTTP默认端口为80HTTPS默认端口为443HTTP不需要证书HTTPS需要CA证书。HTTPS加密技术有一个功能浏览器HTTPS警告。当访问网站时数据从浏览器到代理服务器也就是BP时会出现浏览器HTTPS警告表明你的访问数据传到代理服务器BP并没有传到目标服务器。适用场景BP抓取HTTPS流量浏览器弹出“连接非私密”警告。原因BP作为中间人抓取流量时会给浏览器发送一个“假证书”浏览器无法验证该证书的合法性判定其为不安全连接发出警告。解决方法将BP的证书导入到信任列表中后续就不会警告。HTTPS的核心原理是核心公式HTTPSHTTPTLS加密层早期为SSL在HTTP与TCP之间建立安全隧道层级位置在TCP/IP模型的传输层与应用层之间有一个TLS加密层核心作用客户端发出数据时对数据进行加密服务器收到数据后进行解密保证数据传输过程的安全性。HTTPS加密技术有一个技术叫做对称加密即加密与解密使用同一把密钥客户端传输数据时用这把密钥加密服务器收到数据后用这把密钥解密。不过问题是在传输过程中这把密钥丢失或被黑客得到则整个加密体系将失去意义。为了解决以上问题采取另一种加密方式——非对称加密即使用一对密钥公钥与私钥公钥加密的数据只能用私钥解密反之亦然实现了加密与解密的分离。加密过程是服务器生成一对密钥服务器将公钥传输给客户端客户端传输数据时用公钥加密服务器收到数据后用私钥解密。那么问题又来了就会出现中间人攻击。在客户端与服务器之间有一个中间人服务器发给客户端的公钥被中间人拦截中间人将“真公钥”替换成“假公钥”发送给客户端客户端传输数据时用“假公钥”加密传给中间人时中间人用“假公钥”对应的“假私钥”解密得到客户端发给服务器的数据然后用拦截到的“真公钥”对数据进行加密然后将加密后的数据发送给服务器服务器用“真私钥”解密。在此过程中中间人攻击能够成立原因是核心信任危机即客户端无法验证收到的公钥是否真的来自目标服务器导致“信任链”断裂。身份认证与信任体系数字签名与数字证书、CA为了解决以上服务器公钥的身份验证问题我们讲到一个CA机构。CA机构是权威的第三方机构是来证明“公钥归属”来解决信任问题的。解决方案就是数字证书数字证书包含服务器公钥、域名信息、CA数字签名用来证明公钥的真实性与有效性。那么问题又来了谁来证明数字证书是由CA机构发行的而不是由中间人伪造的解决方案是数字签名数字签名防止数字证书被篡改确保数字证书来源可信。数字证书与数字签名生成的过程是首先服务器将自己的身份信息、域名信息、公钥提交给CA机构来审核审核通过后CA机构会将这些身份信息、域名信息、公钥生成一个证书文件然后将这个证书文件进行哈希运算生成一串不可逆的字符即证书指纹。之后CA机构用CA私钥对证书指纹进行加密加密后的结果即为数字签名。最后CA机构会将证书文件、证书指纹、数字签名打包成数字证书发给服务器。在进行数字签名验证时服务器会将数字证书发给客户端客户端使用CA机构发的CA公钥对数字证书的数字签名进行解密得到证书指纹字符串然后客户端将服务器的身份信息、域名信息、公钥集合起来进行哈希运算得出一组不可逆的字符串最后客户端将用CA公钥解密的字符串与自己用哈希运算生成的字符串进行对比如果相同即服务器正确公钥归属正确。那此时还有一个问题——如何确定CA机构发的CA公钥是真的使用根CA根CA利用信任体系的顶端其证书预装在OS和浏览器中无需验证是整个信任体系的基础。服务器证书是由根CA授权的普通CA颁发的就形成了这样的证书链服务器证书-普通CA-根CA。在验证服务器时一层一层地验证服务器证书、普通CA证书、根CA证书即可确认服务器地来源。由以上内容我们总结HTTPS完整通信流程首先客户端输入HTTPS网址向服务器发送连接请求服务器收到后发送含有证书文件、证书指纹、数字签名的数字证书发给客户端客户端通过追溯证书链、解密数字签名、对比证书指纹来验证服务器公钥归属正确性验证通过后客户端会生成对称密钥使用公钥对对称密钥加密后发送给服务器服务器收到后用私钥解密得到对称密钥最后服务器与客户端使用对称密钥来加密HTTP数据进行传输直到通话结束双方断开连接。BP能够解密HTTPS流量是因为我们手动信任其根证书注以上内容均属个人理解如有错误请各位批评指正