TCP劫持实现反弹shell
实验环境:
1.kali linux ;kali linux 介绍
2.ubuntu虚拟机 两台 //其他的如Redhat 、centos也可以
TCP劫持
TCP劫持的前提是需要获取到通信双方的TCP流量的数据包。
如果不知道数据包的情况下,会形成ack风暴;
形成ACK风暴的原因:
ack风暴(storm)。当会话双方接收到一个不期望的数据包后,就会用自己期望的序列号返回ack包;而在另一端,这个数据包也不是所期望的,就会再次以自己期望的序列号返回ACK包,于是 来回往返 形成了恶性循环,最终导致ACK风暴。
解决方法:
先进行ARP欺骗或MAC洪泛攻击 使得双方的数据包正常的发送到攻击者这里,然后设置包转发
TCP劫持攻击原理描述如下图描述所示:
为了进一步达到攻击服务器后的其他效果 可以使用反弹shell结合TCP会话劫持来达到目的
反弹shell
反弹shell的原理:
1. 关于反弹shell
就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。
2. 反弹shell的原因
通常用于被控端因防火墙受限、权限不足、端口被占用等情形
假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。那么什么情况下正向连接不太好用了呢?
1)某客户机中了你的网马,但是它在局域网内,你直接连接不了。
2)它的ip会动态改变,你不能持续控制。
3)由于防火墙等限制,对方机器只能发送请求,不能接收请求。
4)对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。
**那么反弹就很好理解了