开启telnet服务
检查是否安装telnet和xinetd
rpm -qa telnet-server
rpm -qa xinetd
如果没有安装,则先安装
安装命令
yum install telnet-server
yum install xinetd
安装完成后,将xinetd服务和telnet服务加入开机自启动
systemctl enable xinetd.service
systemctl enable telnet.socket
启动以上两个服务
systemctl start telnet.socket
systemctl start xinetd
别忘记关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机启动
systemctl disable firewalld.service
介绍一下本文的网络结构
攻击机为kali IP为192.168.43.195
客户机为centos7 IP为192.168.43.138
服务器为centos7 IP为192.168.43.153
实验前请确定这三台主机在同一网段
查看IP地址命令为ip addr
下图中IP地址为192.168.43.138
如果不在同一网段需要在虚拟机设置-网络适配器中改为桥接模式
若不成功,在VMware工具栏中选择【编辑】-虚拟网络编辑器
选择还原默认设置
或将虚拟机的网络配置为DHCP,具体步骤可以去百度
若以上均无效(迫不得已)可以重建虚拟机选择桥接模式
TCP会话劫持
首先在kali主机上打开wireshark(kali自带wireshark)
sudo wireshark(以root权限打开)
选择监听他们的共用网卡
选择过滤条件为telnet包
客户机连接服务器
注意:默认无权限登录服务器的root用户
这时kali已经捕获到了telnet包
查看最后一个服务器给客户端的报文的信息
可以看到源端口为23 目的端口为36946 Next seq为227906598 Ack为972054647
我们根据这些信息来确定伪造客户端发送给服务器的包的信息,这里需要用到三次握手的知识
利用下图简单介绍一下实验中需要用到的相关知识
我们可以看到需要回送的包的seq的值为上一个接收到的包的ack值,ack的值为上一个接收到的包的Next seq的值(图中Next seq的值为y+1)
注意:如果你的wireshark显示的Next seq值为relative如下图,右键协议首选项,将Relative sequence numbers 前的勾去掉
获得以上信息后我们在kali主机中利用netwox伪造数据包
命令为sudo netwox 40 --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.43.138 --ip4-dst 192.168.43.153 --tcp-src 36946 --tcp-dst 23 --tcp-seqnum 972054647 --tcp-acknum 227906598 --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "616263"
其中192.168.43.138为客户机IP 192.168.43.153为服务器IP 36946为客户端的端口号 seqnum为上图中的Ack的值 acknum为上图中Next seq的值 616263为abc的16进制表示,data中也可以发送其他数据
在wireshark可以看到捕获到了客户端发给服务器的一条数据为abc的包,证明劫持成功
RST攻击
RST字段代表复位,用来关闭异常连接
一条简单的命令sudo netwox 78 -i “192.168.43.138”
其中192.168.43.138为客户端的IP地址
此时发现客户端与服务器已经断开连接