当前位置: 首页 > news >正文

渗透总结一

HTTPS的原理

HTTP的安全风险(明文传输的致命缺陷)

  1. 窃听风险:攻击者在网络链路(如公共WiFi)监听明文传输数据,导致获取账号密码、聊天记录、隐私信息。
  2. 篡改风险:中间人拦截HTTP数据包并修改内容(如插入恶意代码或广告),导致网页被挂马、下载文件植入病毒。
  3. 冒充风险:伪造服务器域名或IP,诱导用户访问钓鱼网站,导致银行卡信息被盗、钓鱼诈骗。
  4. 会话劫持风险:窃取Cookie或Session ID冒充用户身份,导致账号被恶意操作、资金被盗。

HTTPS的解决方案(TLS/SSL的核心机制)

1. 加密传输(解决窃听风险)
  • 对称加密:使用会话密钥加密应用层数据。

  • 非对称加密:握手阶段用非对称算法(如RSA/ECDHE)安全传递会话密钥。

  • 效果:即使数据被截获,攻击者也无法解密(需破解密钥)。

2. 身份认证(解决冒充风险)
  • 数字证书机制

    • 服务器向CA申请证书,证明域名所有权。

    • 浏览器验证证书有效性(有效期、域名匹配、CA链可信)。

  • 效果:浏览器显示锁图标,用户可确认访问的是真实网站

3. 数据完整性保护(解决篡改风险)
  • MAC(消息认证码):对每条数据生成哈希摘要,接收方验证摘要匹配。

  • 效果:若数据在传输中被修改,哈希校验失败,连接立即终止。

4. 安全密钥交换(前向保密)
  • ECDHE密钥协商:每次会话生成临时密钥,即使服务器私钥泄露,历史通信仍安全。

  • 效果:满足金融级安全要求。

TLS的握手过程

Client Hello

  • 客户端发起连接,发送第一条消息

    • 支持的TLS版本:如 TLS 1.2。

    • 客户端随机数:一个由客户端生成的随机字节串,用于后续密钥生成。

    • 支持的密码套件列表:客户端支持的所有加密算法组合(如 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)。

    • 支持的压缩方法列表(通常为空或禁用)。

Server Hello

  • 服务器响应客户端。

  • 包含:

    • 选定的TLS版本:通常是双方支持的最高版本。

    • 服务器随机数:一个由服务器生成的随机字节串,用于后续密钥生成。

    • 选定的密码套件:从客户端提供的列表中,选择一个服务器也支持且认为最安全的套件。

    • 选定的压缩方法(通常为null)。

Server Certificate

  • 服务器发送其数字证书(通常是X.509证书)。该证书包含:

    • 服务器的公钥。

    • 服务器的域名等信息。

    • 由受信任的证书颁发机构签名,证明该公钥确实属于该域名对应的服务器。

  • 客户端会验证此证书:

    • 检查证书是否在有效期内。

    • 检查证书中的域名是否与访问的域名匹配。

    • 根据本地信任的根CA列表,逐级验证证书链的签名是否有效可信。这一步是确认服务器身份的关键。

Server Key Exchange

  • 根据选定的密钥交换算法,服务器发送生成预主密钥所需的额外信息。

  • 对于 ECDHE

    • 服务器发送其椭圆曲线参数

    • 服务器发送其椭圆曲线公钥

    • 通常,这个消息会用服务器的私钥(对应证书中的公钥)进行签名,客户端用服务器证书中的公钥验证签名。

Server Hello Done

  • 服务器表示其握手消息已发送完毕。

Client Key Exchange

  • 客户端生成一个 pre_master_secret

  • 根据选定的密钥交换算法处理:

    • 对于 ECDHE:客户端使用服务器的椭圆曲线公钥和自身生成的椭圆曲线私钥,通过椭圆曲线Diffie-Hellman算法计算出一个共享密钥,这就是 pre_master_secret

  • 客户端将生成 pre_master_secret 所需的信息发送给服务器。

Change Cipher Spec

  • 客户端发送此简单协议消息,通知服务器:“从现在开始,我将使用我们刚刚协商好的加密套件和密钥来发送消息”

  • 这是一个独立的协议消息,不是握手消息的一部分。

Client Finished

  • 客户端发送第一条使用协商好的算法和密钥加密的消息。

  • 包含一个特殊的 Finished 消息。

  • 该消息是对到目前为止所有握手消息计算的一个哈希摘要(使用协商的PRF),并用会话密钥加密。

  • 作用:验证握手过程是否被篡改(如果哈希对不上,说明中间有人修改了握手消息),并确认客户端拥有正确的密钥。

Change Cipher Spec

  • 服务器发送此消息,通知客户端:“我也已切换到加密模式”

Server Finished

  • 服务器发送其 Finished 消息(同样是对所有握手消息的哈希摘要,用会话密钥加密)。

  • 作用:验证握手完整性,确认服务器拥有正确的密钥。

      注: 完整握手开销较大(尤其RSA证书验证)。TLS 提供了两种机制复用之前的会话参数,减少握手开销:

  1. Session ID

    • 服务器在第一次完整握手的 Server Hello 中发送一个唯一的 Session ID

    • 客户端在后续连接的 Client Hello 中带上这个 ID。

    • 如果服务器缓存中有此 ID 对应的会话状态,则直接跳到 Change Cipher Spec 和 Finished 消息,跳过证书交换和密钥协商。称为简化握手

  2. Session Tickets

    • 服务器在第一次完整握手结束时,将加密的会话状态(包含主密钥等信息)作为票据发送给客户端。

    • 客户端在后续连接的 Client Hello 的扩展中带上此票据。

    • 服务器解密票据,恢复会话状态,同样进入简化握手。优点是会话状态存储在客户端,减轻服务器缓存压力。

DNS解析传输过程

  • linux下:nslookup和dig
  • Windows下:nslookup

dns的解析流程:

1.用户输入域名 :用户在浏览器输入域名,系统会检查本地缓存是否有该域名的解析结果。若有则直接返回IP地址,否则进入下一步。
2. 查询本地DNS服务器: 系统向本地DNS服务器发起查询请求。本地DNS服务器若有缓存记录则直接返回结果,否则进入递归查询流程。
3. 递归查询根域名服务器 :本地DNS服务器向根域名服务器发起请求。根域名服务器不直接解析域名,而是返回负责顶级域的TLD服务器地址。
4. 查询顶级服务器: 本地DNS服务器根据根域名服务器的指引,向顶级服务器查询。顶级服务器返回负责该域名的权威DNS服务器地址。
5. 查询权威DNS服务器 本地DNS服务器向权威DNS服务器发起请求。权威服务器存储域名的具体解析记录,返回对应的IP地址。
6. 返回结果并缓存 本地DNS服务器将IP地址返回给用户端,同时缓存该记录。用户端也缓存结果,后续请求可直接使用。
7. 建立连接 浏览器获得IP地址后,与目标服务器建立TCP连接,开始传输数据。

附:linux下可以用dig来追踪dns每一步解析过程:

走本地缓存---->看host文件---->找到就解析
------------------------->找不到就走路由器
--->查询13台根域服务器(看后缀是哪个域名)
--->交给后缀的dns服务器
--->看到xxx.后缀 交给xxx.后缀的dns服务器
--->最终解析出ip--->将ip返回给服务器(一层一层)
--->下发给电脑--->把缓存记录在本地

http://www.dtcms.com/a/284579.html

相关文章:

  • docker中 contriner 和 images 什么关系
  • Oracle 成本优化器(CBO)与数据库统计信息:核心原理与实践
  • 深度学习计算图学习路线
  • Python获取网页乱码问题终极解决方案 | Python爬虫编码处理指南
  • UE5 lumen
  • 《Oracle SQL:使用 RTRIM 和 TO_CHAR 函数格式化数字并移除多余小数点》
  • 解读PLM系统软件在制造企业研发管理中的应用
  • 【神经网络在MATLAB中是如何实现的?】
  • 解锁Windows下Composer切换PHP版本的奥秘
  • 老牌支付品牌钱如潮入局本地生活抽佣系统,行业竞争加剧
  • Linux Shell脚本
  • linux端口监听命令
  • 支付宝智能助理用户会话实时统计:Flink定时器与状态管理实战解析
  • 全面升级!WizTelemetry 可观测平台 2.0 深度解析:打造云原生时代的智能可观测平台
  • cve-2012-0809 sudo格式化字符串漏洞分析及利用
  • TASK01【datawhale组队学习】地瓜机器人具身智能概述
  • Jmeter系列(八)-定时器(待更新)
  • 电缆安全双保险:不止防盗,更能防触电的塔能智慧照明守护方案
  • 【推荐100个unity插件】使用C#或者unity实现爬虫爬取静态网页数据——Html Agility Pack (HAP)库和XPath 语法的使用
  • 腾讯位置商业授权鸿蒙地图SDK
  • 【中等】题解力扣22:括号生成
  • 【专题十二】栈
  • 调用接口报错,使用postman调用就没问题如何解决
  • Redis 生产实战 7×24:容量规划、性能调优、故障演练与成本治理 40 条军规
  • Apollo10.0学习——control模块(2)之纵向控制器参数说明
  • Redisson布隆过滤器原理以及解决Redis缓存穿透方案
  • 单片机(STM32-时钟系统)
  • js是实现记住密码自动填充功能
  • PyCharm 高效入门指南:从安装到进阶,解锁 Python 开发全流程
  • EXCEL VBA合并当前工作簿的所有工作表sheet