51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

解释TCP三次握手的流程,并说明在漏洞利用中,如何利用TCP序列号预测或SYN攻击等漏洞?请结合实际案例(如360浏览器中的某个场景)。

360助理安全研究实习生(漏洞挖掘与利用)——北京难度:中等

答案

1) 【一句话结论】TCP三次握手通过SYN、SYN-ACK、ACK完成连接建立,序列号用于同步数据流;若服务器生成初始序列号(ISN)的算法有规律(如线性递增),攻击者可预测ISN,伪造大量SYN包发动SYN攻击,耗尽服务器资源;结合360浏览器场景,假设某服务器的ISN按时间线性增长,攻击者通过抓包预测ISN,伪造大量SYN包,导致服务器SYN队列满,无法响应正常请求。

2) 【原理/概念讲解】TCP三次握手是客户端与服务器建立可靠连接的流程:

  • 第一步:客户端发送SYN包(同步序列号),包含初始序列号ISN1(如10000),请求建立连接;
  • 第二步:服务器收到后,回复SYN-ACK包(同步序列号+确认号),确认客户端的ISN1(确认号=ISN1+1),并告知自己的ISN2(如10001);
  • 第三步:客户端收到后,发送ACK包(确认号=ISN2),完成连接。

序列号用于确保数据包按序到达,避免重复。SYN攻击原理:若服务器生成ISN的算法简单(如线性递增、基于时间),攻击者可通过抓包获取前几个ISN,发现规律并预测后续ISN,伪造大量伪造源IP、目标IP为服务器、序列号为预测值的SYN包。服务器收到后回复SYN-ACK,但因连接未完成(客户端未发送ACK),资源被占用在SYN队列中,最终队列溢出导致拒绝服务。

3) 【对比与适用场景】

特性正常三次握手SYN攻击(序列号预测)
请求包客户端SYN(含ISN1)攻击者伪造SYN(伪造源IP,ISN预测)
服务器响应SYN-ACK(确认ISN1,发送ISN2)SYN-ACK(服务器响应,但连接未完成)
客户端确认ACK(确认ISN2)未发送(攻击者不完成连接)
资源占用正常(连接建立后资源分配)服务器资源(SYN队列)被大量占用
使用场景正常网络通信,建立可靠连接恶意攻击,耗尽服务器资源
注意点序列号随机/复杂生成序列号可预测,导致攻击

4) 【示例】假设360浏览器中某后台服务(如更新服务)的ISN按时间线性增长(每秒+1)。攻击者通过抓包获取前两个ISN(t1=10000,t2=10001),发现规律,预测t3=10002。攻击者伪造大量SYN包,源IP为任意(如攻击者IP),目标IP为服务器更新服务端口(如8080),序列号为10002。服务器收到后回复SYN-ACK(序列号10003,确认号10001),攻击者不发送ACK,导致服务器在SYN队列中保留该连接,最终队列满,无法响应正常请求。伪代码示例:

// 攻击者代码(伪代码)
for i in 1 to 10000:
    isn = predict_isn(i)  # 根据历史ISN预测
    send_syn(target_ip, target_port, isn)

其中predict_isn函数根据线性规律计算下一个ISN。

5) 【面试口播版答案】
好的,首先解释TCP三次握手流程:客户端发送SYN包(含初始序列号ISN1),服务器回复SYN-ACK(确认ISN1,发送自己的ISN2),客户端发送ACK(确认ISN2),完成连接。序列号用于同步数据流。漏洞利用方面,若服务器生成ISN的算法有规律(比如线性增长),攻击者可预测后续ISN,发动SYN攻击。比如360浏览器中某个服务器的ISN按时间递增,攻击者通过抓包获取前几个ISN,预测下一个ISN,伪造大量SYN包,服务器回复SYN-ACK后,因连接未完成,资源被占用,最终导致服务器资源耗尽,无法响应正常请求。具体来说,三次握手步骤是:1. 客户端发送SYN(初始序列号ISN1);2. 服务器回复SYN-ACK(确认ISN1,发送ISN2);3. 客户端发送ACK(确认ISN2)。序列号预测的漏洞在于,若ISN生成方式简单(如时间递增),攻击者可预测,伪造SYN包,耗尽服务器的SYN队列,导致拒绝服务。比如360的某个后台服务,攻击者通过分析历史连接的ISN,发现规律,预测下一个ISN,然后发送大量伪造的SYN包,服务器处理这些包后,SYN队列满,无法处理正常连接请求。

6) 【追问清单】

  • 问:TCP序列号生成算法有哪些常见方式?为什么有些服务器会使用简单算法?
    回答要点:常见方式有线性递增(基于时间)、随机生成(如Mersenne Twister)、基于连接数等。简单算法(如线性递增)易被预测,导致SYN攻击;复杂算法(如随机)能提高安全性,但实现复杂。
  • 问:SYN攻击的防御措施有哪些?比如SYN cookies?
    回答要点:SYN cookies(服务器在SYN-ACK中包含部分序列号,客户端ACK时验证)、限制SYN队列长度、使用防火墙过滤SYN包、增加SYN timeout时间等。
  • 问:除了序列号预测,还有哪些TCP相关漏洞?比如RST攻击或ACK攻击?
    回答要点:RST攻击(伪造RST包,中断连接)、ACK攻击(伪造ACK包,干扰数据传输),但序列号预测导致的SYN攻击是最典型的。
  • 问:在360浏览器场景中,如何检测或预防这种漏洞?比如是否对ISN生成方式进行了改进?
    回答要点:改进措施包括使用更复杂的ISN生成算法(如随机)、增加SYN队列的容量、实施速率限制、使用SYN cookies技术,确保即使被攻击,服务器也能处理正常请求。

7) 【常见坑/雷区】

  • 误解三次握手的步骤顺序:比如认为服务器先发送SYN,这是错误的,客户端先发起SYN。
  • 错误理解序列号的作用:认为序列号只是标记数据包顺序,忽略其用于同步连接的作用。
  • 漏洞利用中,忽略ISN生成算法的具体影响:比如认为所有服务器都易受攻击,而实际上复杂算法不易被预测。
  • 例子中假设的360浏览器场景不真实,需要明确假设,避免编造内部信息。
  • 忽略SYN攻击的后果:比如只说服务器资源被占用,没说明具体如何导致拒绝服务(如SYN队列溢出,无法处理正常连接)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1